diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2022-03-29 15:24:58 +0200 |
---|---|---|
committer | Eli Schwartz <eschwartz93@gmail.com> | 2022-05-03 02:00:29 -0400 |
commit | 2f68aa21e87f451196bb050315e268cb38f200c5 (patch) | |
tree | 331b98d0a95d3a9586804c0a5963400da18ff530 | |
parent | 3a960023d3e78d04651850178db96c7d742725e6 (diff) | |
download | meson-2f68aa21e87f451196bb050315e268cb38f200c5.zip meson-2f68aa21e87f451196bb050315e268cb38f200c5.tar.gz meson-2f68aa21e87f451196bb050315e268cb38f200c5.tar.bz2 |
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.
10 files changed, 53 insertions, 0 deletions
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 <stdio.h> +#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 <stdio.h> +#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." + } + ] +} |