aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2022-03-29 15:24:58 +0200
committerEli Schwartz <eschwartz93@gmail.com>2022-05-03 02:00:29 -0400
commit2f68aa21e87f451196bb050315e268cb38f200c5 (patch)
tree331b98d0a95d3a9586804c0a5963400da18ff530
parent3a960023d3e78d04651850178db96c7d742725e6 (diff)
downloadmeson-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.
-rw-r--r--test cases/failing/124 override and add_project_dependency/inc/lib.h2
-rw-r--r--test cases/failing/124 override and add_project_dependency/lib.c3
-rw-r--r--test cases/failing/124 override and add_project_dependency/meson.build8
-rw-r--r--test cases/failing/124 override and add_project_dependency/subprojects/a/meson.build10
-rw-r--r--test cases/failing/124 override and add_project_dependency/subprojects/a/prog.c6
-rw-r--r--test cases/failing/124 override and add_project_dependency/test.json7
-rw-r--r--test cases/failing/125 targets before add_project_dependency/inc/lib.h2
-rw-r--r--test cases/failing/125 targets before add_project_dependency/lib.c3
-rw-r--r--test cases/failing/125 targets before add_project_dependency/meson.build5
-rw-r--r--test cases/failing/125 targets before add_project_dependency/test.json7
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."
+ }
+ ]
+}