diff options
Diffstat (limited to 'test cases/rust')
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) |