aboutsummaryrefslogtreecommitdiff
path: root/test cases/rust
diff options
context:
space:
mode:
Diffstat (limited to 'test cases/rust')
-rw-r--r--test cases/rust/1 basic/meson.build6
-rw-r--r--test cases/rust/1 basic/test.json4
-rw-r--r--test cases/rust/22 cargo subproject/subprojects/foo-0-rs/Cargo.toml3
-rw-r--r--test cases/rust/22 cargo subproject/subprojects/foo-0-rs/lib.rs5
-rw-r--r--test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs.wrap2
-rw-r--r--test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs/Cargo.toml7
-rw-r--r--test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs/lib.rs8
-rw-r--r--test cases/rust/28 mixed/hello.rs6
-rw-r--r--test cases/rust/28 mixed/main.cc5
-rw-r--r--test cases/rust/28 mixed/meson.build12
-rw-r--r--test cases/rust/4 polyglot/stuff.rs2
-rw-r--r--test cases/rust/9 unit tests/meson.build6
12 files changed, 64 insertions, 2 deletions
diff --git a/test cases/rust/1 basic/meson.build b/test cases/rust/1 basic/meson.build
index f422beb..00bd212 100644
--- a/test cases/rust/1 basic/meson.build
+++ b/test cases/rust/1 basic/meson.build
@@ -6,6 +6,12 @@ e = executable('rust-program', 'prog.rs',
)
test('rusttest', e)
+e = executable('rust-dynamic', 'prog.rs',
+ override_options: {'rust_dynamic_std': true},
+ install : true
+)
+test('rusttest-dynamic', e)
+
subdir('subdir')
# this should fail due to debug_assert
diff --git a/test cases/rust/1 basic/test.json b/test cases/rust/1 basic/test.json
index 95e6ced..3cbdefa 100644
--- a/test cases/rust/1 basic/test.json
+++ b/test cases/rust/1 basic/test.json
@@ -3,6 +3,8 @@
{"type": "exe", "file": "usr/bin/rust-program"},
{"type": "pdb", "file": "usr/bin/rust-program"},
{"type": "exe", "file": "usr/bin/rust-program2"},
- {"type": "pdb", "file": "usr/bin/rust-program2"}
+ {"type": "pdb", "file": "usr/bin/rust-program2"},
+ {"type": "exe", "file": "usr/bin/rust-dynamic"},
+ {"type": "pdb", "file": "usr/bin/rust-dynamic"}
]
}
diff --git a/test cases/rust/22 cargo subproject/subprojects/foo-0-rs/Cargo.toml b/test cases/rust/22 cargo subproject/subprojects/foo-0-rs/Cargo.toml
index 8c5351a..dd8525b 100644
--- a/test cases/rust/22 cargo subproject/subprojects/foo-0-rs/Cargo.toml
+++ b/test cases/rust/22 cargo subproject/subprojects/foo-0-rs/Cargo.toml
@@ -27,6 +27,9 @@ features = ["f1"]
[dependencies.libname]
version = "1"
+[target."cfg(unix)".dependencies.unixdep]
+version = "0.1"
+
[features]
default = ["f1"]
f1 = ["f2", "f3"]
diff --git a/test cases/rust/22 cargo subproject/subprojects/foo-0-rs/lib.rs b/test cases/rust/22 cargo subproject/subprojects/foo-0-rs/lib.rs
index 4497dc4..c579815 100644
--- a/test cases/rust/22 cargo subproject/subprojects/foo-0-rs/lib.rs
+++ b/test cases/rust/22 cargo subproject/subprojects/foo-0-rs/lib.rs
@@ -8,6 +8,11 @@ extern "C" {
#[cfg(feature = "foo")]
#[no_mangle]
pub extern "C" fn rust_func() -> i32 {
+ #[cfg(unix)]
+ {
+ extern crate unixdep;
+ assert!(unixdep::only_on_unix() == 0);
+ }
assert!(common::common_func() == 0);
assert!(libothername::stuff() == 42);
let v: i32;
diff --git a/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs.wrap b/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs.wrap
new file mode 100644
index 0000000..99686e9
--- /dev/null
+++ b/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs.wrap
@@ -0,0 +1,2 @@
+[wrap-file]
+method = cargo
diff --git a/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs/Cargo.toml b/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs/Cargo.toml
new file mode 100644
index 0000000..d72fb39
--- /dev/null
+++ b/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "unixdep"
+version = "0.1"
+edition = "2021"
+
+[lib]
+path = "lib.rs"
diff --git a/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs/lib.rs b/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs/lib.rs
new file mode 100644
index 0000000..a736e8a
--- /dev/null
+++ b/test cases/rust/22 cargo subproject/subprojects/unixdep-0.1-rs/lib.rs
@@ -0,0 +1,8 @@
+pub fn only_on_unix() -> i32 {
+ 0
+}
+
+#[cfg(not(unix))]
+pub fn broken() -> i32 {
+ plop
+}
diff --git a/test cases/rust/28 mixed/hello.rs b/test cases/rust/28 mixed/hello.rs
new file mode 100644
index 0000000..549fa94
--- /dev/null
+++ b/test cases/rust/28 mixed/hello.rs
@@ -0,0 +1,6 @@
+#![no_main]
+
+#[no_mangle]
+pub extern "C" fn hello_rust() {
+ println!("hello world");
+}
diff --git a/test cases/rust/28 mixed/main.cc b/test cases/rust/28 mixed/main.cc
new file mode 100644
index 0000000..10daae4
--- /dev/null
+++ b/test cases/rust/28 mixed/main.cc
@@ -0,0 +1,5 @@
+#include <iostream>
+
+extern "C" void hello_rust(void);
+
+int main() { std::cout << "This is C++!\n"; hello_rust(); }
diff --git a/test cases/rust/28 mixed/meson.build b/test cases/rust/28 mixed/meson.build
new file mode 100644
index 0000000..fac3d46
--- /dev/null
+++ b/test cases/rust/28 mixed/meson.build
@@ -0,0 +1,12 @@
+# use C++ to make it harder
+project('mixed', ['cpp', 'rust'])
+
+e1 = executable('mixed', 'hello.rs', 'main.cc')
+e2 = executable('mixed-structured', structured_sources('hello.rs'), 'main.cc')
+
+hello2 = import('fs').copyfile('hello.rs', 'hello2.rs')
+e3 = executable('mixed-structured-gen', structured_sources(hello2), 'main.cc')
+
+test('mixed', e1)
+test('mixed-structured', e2)
+test('mixed-structured-gen', e3)
diff --git a/test cases/rust/4 polyglot/stuff.rs b/test cases/rust/4 polyglot/stuff.rs
index 30c3a36..e5d9386 100644
--- a/test cases/rust/4 polyglot/stuff.rs
+++ b/test cases/rust/4 polyglot/stuff.rs
@@ -1,4 +1,4 @@
#[no_mangle]
-pub extern fn f() {
+pub extern "C" fn f() {
println!("Hello from Rust!");
}
diff --git a/test cases/rust/9 unit tests/meson.build b/test cases/rust/9 unit tests/meson.build
index 0fa2fa8..81045f2 100644
--- a/test cases/rust/9 unit tests/meson.build
+++ b/test cases/rust/9 unit tests/meson.build
@@ -40,6 +40,12 @@ if rustdoc.found()
protocol : 'rust',
suite : ['doctests'],
)
+
+ doclib = shared_library('rust_doc_lib', ['doctest1.rs'], build_by_default : false)
+ rust.doctest('rust shared doctests', doclib,
+ protocol : 'rust',
+ suite : ['doctests'],
+ )
endif
exe = executable('rust_exe', ['test2.rs', 'test.rs'], build_by_default : false)