From 2f68aa21e87f451196bb050315e268cb38f200c5 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Mar 2022 15:24:58 +0200 Subject: add testcase for bad things with add_project_dependencies Test that add_project_dependencies() can only be used before build targets have been declared. Also test that one cannot use override_dependency on a superproject to inject a superproject's build products into the subproject. This would violate the rule that build products cannot be used with add_project_dependencies() (similar to e.g. compiler.has_function), so check that meson detects the situation correctly. --- .../failing/124 override and add_project_dependency/inc/lib.h | 2 ++ .../failing/124 override and add_project_dependency/lib.c | 3 +++ .../124 override and add_project_dependency/meson.build | 8 ++++++++ .../subprojects/a/meson.build | 10 ++++++++++ .../subprojects/a/prog.c | 6 ++++++ .../failing/124 override and add_project_dependency/test.json | 7 +++++++ .../125 targets before add_project_dependency/inc/lib.h | 2 ++ .../failing/125 targets before add_project_dependency/lib.c | 3 +++ .../125 targets before add_project_dependency/meson.build | 5 +++++ .../125 targets before add_project_dependency/test.json | 7 +++++++ 10 files changed, 53 insertions(+) create mode 100644 test cases/failing/124 override and add_project_dependency/inc/lib.h create mode 100644 test cases/failing/124 override and add_project_dependency/lib.c create mode 100644 test cases/failing/124 override and add_project_dependency/meson.build create mode 100644 test cases/failing/124 override and add_project_dependency/subprojects/a/meson.build create mode 100644 test cases/failing/124 override and add_project_dependency/subprojects/a/prog.c create mode 100644 test cases/failing/124 override and add_project_dependency/test.json create mode 100644 test cases/failing/125 targets before add_project_dependency/inc/lib.h create mode 100644 test cases/failing/125 targets before add_project_dependency/lib.c create mode 100644 test cases/failing/125 targets before add_project_dependency/meson.build create mode 100644 test cases/failing/125 targets before add_project_dependency/test.json (limited to 'test cases') diff --git a/test cases/failing/124 override and add_project_dependency/inc/lib.h b/test cases/failing/124 override and add_project_dependency/inc/lib.h new file mode 100644 index 0000000..4cfc47e --- /dev/null +++ b/test cases/failing/124 override and add_project_dependency/inc/lib.h @@ -0,0 +1,2 @@ +#pragma once +void f(void); diff --git a/test cases/failing/124 override and add_project_dependency/lib.c b/test cases/failing/124 override and add_project_dependency/lib.c new file mode 100644 index 0000000..b8b22a3 --- /dev/null +++ b/test cases/failing/124 override and add_project_dependency/lib.c @@ -0,0 +1,3 @@ +#include +#include "lib.h" +void f() {puts("hello");} diff --git a/test cases/failing/124 override and add_project_dependency/meson.build b/test cases/failing/124 override and add_project_dependency/meson.build new file mode 100644 index 0000000..c878b01 --- /dev/null +++ b/test cases/failing/124 override and add_project_dependency/meson.build @@ -0,0 +1,8 @@ +project('super', 'c') + +inc = include_directories('inc') +lib = static_library('sneaky', 'lib.c', include_directories: inc) +meson.override_dependency('sneaky', + declare_dependency(link_with: lib, include_directories: inc)) + +subproject('a') diff --git a/test cases/failing/124 override and add_project_dependency/subprojects/a/meson.build b/test cases/failing/124 override and add_project_dependency/subprojects/a/meson.build new file mode 100644 index 0000000..4f6f070 --- /dev/null +++ b/test cases/failing/124 override and add_project_dependency/subprojects/a/meson.build @@ -0,0 +1,10 @@ +project('a', 'c') + +dep = dependency('sneaky') + +# does not work +add_project_dependencies(dep, language: 'c') +executable('prog', 'prog.c') + +# this would work instead: +# executable('prog', 'prog.c', dependencies: dep) diff --git a/test cases/failing/124 override and add_project_dependency/subprojects/a/prog.c b/test cases/failing/124 override and add_project_dependency/subprojects/a/prog.c new file mode 100644 index 0000000..ce60f81 --- /dev/null +++ b/test cases/failing/124 override and add_project_dependency/subprojects/a/prog.c @@ -0,0 +1,6 @@ +#include "lib.h" + +int main() { + f(); + return 0; +} diff --git a/test cases/failing/124 override and add_project_dependency/test.json b/test cases/failing/124 override and add_project_dependency/test.json new file mode 100644 index 0000000..42872ad --- /dev/null +++ b/test cases/failing/124 override and add_project_dependency/test.json @@ -0,0 +1,7 @@ +{ + "stdout": [ + { + "line": "test cases/failing/124 override and add_project_dependency/subprojects/a/meson.build:6:0: ERROR: Dependencies must be external dependencies" + } + ] +} diff --git a/test cases/failing/125 targets before add_project_dependency/inc/lib.h b/test cases/failing/125 targets before add_project_dependency/inc/lib.h new file mode 100644 index 0000000..4cfc47e --- /dev/null +++ b/test cases/failing/125 targets before add_project_dependency/inc/lib.h @@ -0,0 +1,2 @@ +#pragma once +void f(void); diff --git a/test cases/failing/125 targets before add_project_dependency/lib.c b/test cases/failing/125 targets before add_project_dependency/lib.c new file mode 100644 index 0000000..b8b22a3 --- /dev/null +++ b/test cases/failing/125 targets before add_project_dependency/lib.c @@ -0,0 +1,3 @@ +#include +#include "lib.h" +void f() {puts("hello");} diff --git a/test cases/failing/125 targets before add_project_dependency/meson.build b/test cases/failing/125 targets before add_project_dependency/meson.build new file mode 100644 index 0000000..38fe102 --- /dev/null +++ b/test cases/failing/125 targets before add_project_dependency/meson.build @@ -0,0 +1,5 @@ +project('test', 'c') + +static_library('lib', 'lib.c') +inc = include_directories('inc') +add_project_dependencies(declare_dependency(include_directories: inc), language: 'c') diff --git a/test cases/failing/125 targets before add_project_dependency/test.json b/test cases/failing/125 targets before add_project_dependency/test.json new file mode 100644 index 0000000..dae9506 --- /dev/null +++ b/test cases/failing/125 targets before add_project_dependency/test.json @@ -0,0 +1,7 @@ +{ + "stdout": [ + { + "line": "test cases/failing/125 targets before add_project_dependency/meson.build:5:0: ERROR: Tried to use 'add_project_dependencies' after a build target has been declared." + } + ] +} -- cgit v1.1