aboutsummaryrefslogtreecommitdiff
path: root/test cases/rust
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-05-03 12:57:04 -0700
committerDylan Baker <dylan@pnwbakers.com>2022-03-07 12:33:33 -0800
commit038d0723647f58d62754afb8f4dca7dc716a5ba8 (patch)
treea61eb6b473809b864407c6d7cbcde262033ae499 /test cases/rust
parent0d0a4fa0fe02ca8297743a5a8e64ee72060cc990 (diff)
downloadmeson-038d0723647f58d62754afb8f4dca7dc716a5ba8.zip
meson-038d0723647f58d62754afb8f4dca7dc716a5ba8.tar.gz
meson-038d0723647f58d62754afb8f4dca7dc716a5ba8.tar.bz2
tests/rust: Add a test for structured inputs
Diffstat (limited to 'test cases/rust')
-rwxr-xr-xtest cases/rust/18 structured sources/gen.py20
-rw-r--r--test cases/rust/18 structured sources/meson.build39
-rwxr-xr-xtest cases/rust/18 structured sources/no_copy_test.py18
-rw-r--r--test cases/rust/18 structured sources/src/foo.rs.in4
-rw-r--r--test cases/rust/18 structured sources/src/main.rs5
-rw-r--r--test cases/rust/18 structured sources/src2/foo/mod.rs4
-rw-r--r--test cases/rust/18 structured sources/src2/main-unique.rs5
7 files changed, 95 insertions, 0 deletions
diff --git a/test cases/rust/18 structured sources/gen.py b/test cases/rust/18 structured sources/gen.py
new file mode 100755
index 0000000..16e5c04
--- /dev/null
+++ b/test cases/rust/18 structured sources/gen.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+
+import argparse
+import textwrap
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser()
+ parser.add_argument('output')
+ args = parser.parse_args()
+
+ with open(args.output, 'w') as f:
+ f.write(textwrap.dedent('''\
+ pub fn bar() -> () {
+ println!("Hello, World!");
+ }'''))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/test cases/rust/18 structured sources/meson.build b/test cases/rust/18 structured sources/meson.build
new file mode 100644
index 0000000..8fa0443
--- /dev/null
+++ b/test cases/rust/18 structured sources/meson.build
@@ -0,0 +1,39 @@
+project('structured input', 'rust')
+
+foo_mod_rs = configure_file(
+ input : 'src/foo.rs.in',
+ output : 'mod.rs',
+ configuration : {'message' : 'Hello, World!'},
+)
+
+conf_file = executable(
+ 'main_conf_file',
+ structured_sources(
+ 'src/main.rs',
+ {'foo' : [foo_mod_rs]},
+ ),
+)
+
+ct = custom_target(
+ 'foo.rs',
+ output : 'foo.rs',
+ command : ['gen.py', '@OUTPUT@'],
+)
+
+target = executable(
+ 'main_custom_target',
+ structured_sources(
+ ['src/main.rs', ct],
+ ),
+)
+
+# Should not be coppied
+executable(
+ 'no_copy_target',
+ structured_sources(
+ ['src2/main-unique.rs'],
+ {'foo': 'src2/foo/mod.rs'},
+ ),
+)
+
+test('no-copy', find_program('no_copy_test.py'), args : meson.current_build_dir())
diff --git a/test cases/rust/18 structured sources/no_copy_test.py b/test cases/rust/18 structured sources/no_copy_test.py
new file mode 100755
index 0000000..91506b2
--- /dev/null
+++ b/test cases/rust/18 structured sources/no_copy_test.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+import argparse
+import os
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser()
+ parser.add_argument('builddir')
+ args = parser.parse_args()
+
+ for _, _, files in os.walk(args.builddir):
+ if 'main-unique.rs' in files:
+ exit(1)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/test cases/rust/18 structured sources/src/foo.rs.in b/test cases/rust/18 structured sources/src/foo.rs.in
new file mode 100644
index 0000000..4f3fc42
--- /dev/null
+++ b/test cases/rust/18 structured sources/src/foo.rs.in
@@ -0,0 +1,4 @@
+
+pub fn bar() -> () {
+ println!("@message@");
+}
diff --git a/test cases/rust/18 structured sources/src/main.rs b/test cases/rust/18 structured sources/src/main.rs
new file mode 100644
index 0000000..3ffeee2
--- /dev/null
+++ b/test cases/rust/18 structured sources/src/main.rs
@@ -0,0 +1,5 @@
+mod foo;
+
+fn main() {
+ foo::bar();
+}
diff --git a/test cases/rust/18 structured sources/src2/foo/mod.rs b/test cases/rust/18 structured sources/src2/foo/mod.rs
new file mode 100644
index 0000000..9463d95
--- /dev/null
+++ b/test cases/rust/18 structured sources/src2/foo/mod.rs
@@ -0,0 +1,4 @@
+
+pub fn bar() -> () {
+ println!("Hello, World!");
+}
diff --git a/test cases/rust/18 structured sources/src2/main-unique.rs b/test cases/rust/18 structured sources/src2/main-unique.rs
new file mode 100644
index 0000000..3ffeee2
--- /dev/null
+++ b/test cases/rust/18 structured sources/src2/main-unique.rs
@@ -0,0 +1,5 @@
+mod foo;
+
+fn main() {
+ foo::bar();
+}