diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-06-09 08:41:52 +0200 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2025-10-17 12:48:29 -0400 |
| commit | ca8b6ebccfd79b11885d5e1e9cc293d941393ff5 (patch) | |
| tree | 56e4b2c45026656edfd90899934de7007bddf53d /test cases | |
| parent | 17bc039a379fb07b0a6348734f1c56741fca1178 (diff) | |
| download | meson-ca8b6ebccfd79b11885d5e1e9cc293d941393ff5.tar.gz | |
test cases: add test for cargo workspaces
Extracted from a patch by Xavier Claessens <xclaessens@netflix.com>,
adjusted to make it compile with cargo.
Diffstat (limited to 'test cases')
12 files changed, 88 insertions, 0 deletions
diff --git a/test cases/rust/30 cargo workspace/meson.build b/test cases/rust/30 cargo workspace/meson.build new file mode 100644 index 000000000..fab1954c6 --- /dev/null +++ b/test cases/rust/30 cargo workspace/meson.build @@ -0,0 +1,13 @@ +project('cargo workspace', 'c', 'rust') + +foo_rs = dependency('foo-1-rs') +e = executable('test-foo-1-rs', 'test_foo_1.rs', + dependencies: [foo_rs], +) +test('test-foo-1-rs', e) + +foo_cdylib = dependency('foo-1-cdylib') +e = executable('test-foo-1-cdylib', 'test_foo_1.c', + dependencies: [foo_cdylib], +) +test('test-foo-1-rs', e) diff --git a/test cases/rust/30 cargo workspace/subprojects/foo.wrap b/test cases/rust/30 cargo workspace/subprojects/foo.wrap new file mode 100644 index 000000000..3d21ca79a --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo.wrap @@ -0,0 +1,5 @@ +[wrap-file] +method=cargo + +[provide] +dependency_names=foo-1-rs diff --git a/test cases/rust/30 cargo workspace/subprojects/foo/Cargo.toml b/test cases/rust/30 cargo workspace/subprojects/foo/Cargo.toml new file mode 100644 index 000000000..54fff4815 --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo/Cargo.toml @@ -0,0 +1,15 @@ +[workspace] +resolver = "2" +members = [ + "src/foo", + "src/member1" +] +default-members = ["src/foo"] + +[workspace.package] +edition = "2021" +version = "1.0.0" + +[workspace.dependencies] +member1 = { path="./src/member1" } +member2 = { path="src/member2", features = ["f1"] } diff --git a/test cases/rust/30 cargo workspace/subprojects/foo/src/foo/Cargo.toml b/test cases/rust/30 cargo workspace/subprojects/foo/src/foo/Cargo.toml new file mode 100644 index 000000000..52b39e9b2 --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo/src/foo/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "foo" +edition.workspace = true +version.workspace = true + +[lib] +crate-type = ["lib", "cdylib"] + +[dependencies] +m1 = { path="../member1", package="member1" } diff --git a/test cases/rust/30 cargo workspace/subprojects/foo/src/foo/src/lib.rs b/test cases/rust/30 cargo workspace/subprojects/foo/src/foo/src/lib.rs new file mode 100644 index 000000000..65803daa7 --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo/src/foo/src/lib.rs @@ -0,0 +1,6 @@ +extern crate m1; + +#[no_mangle] +pub extern "C" fn foo() -> i32 { + m1::member1() + 1 +} diff --git a/test cases/rust/30 cargo workspace/subprojects/foo/src/lib.rs b/test cases/rust/30 cargo workspace/subprojects/foo/src/lib.rs new file mode 100644 index 000000000..c3773818c --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo/src/lib.rs @@ -0,0 +1,3 @@ +pub fn foo() -> i32 { + member1::member1() + 1 +} diff --git a/test cases/rust/30 cargo workspace/subprojects/foo/src/member1/Cargo.toml b/test cases/rust/30 cargo workspace/subprojects/foo/src/member1/Cargo.toml new file mode 100644 index 000000000..2c521377a --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo/src/member1/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "member1" +edition.workspace = true +version.workspace = true + +[dependencies] +member2 = { workspace = true, features=["f2"] } diff --git a/test cases/rust/30 cargo workspace/subprojects/foo/src/member1/src/lib.rs b/test cases/rust/30 cargo workspace/subprojects/foo/src/member1/src/lib.rs new file mode 100644 index 000000000..d4778ce62 --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo/src/member1/src/lib.rs @@ -0,0 +1,5 @@ +extern crate member2; + +pub fn member1() -> i32 { + member2::member2() + 1 +} diff --git a/test cases/rust/30 cargo workspace/subprojects/foo/src/member2/Cargo.toml b/test cases/rust/30 cargo workspace/subprojects/foo/src/member2/Cargo.toml new file mode 100644 index 000000000..059120a1e --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo/src/member2/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "member2" +edition.workspace = true +version.workspace = true + +[features] +default = [] +f1 = [] +f2 = [] diff --git a/test cases/rust/30 cargo workspace/subprojects/foo/src/member2/src/lib.rs b/test cases/rust/30 cargo workspace/subprojects/foo/src/member2/src/lib.rs new file mode 100644 index 000000000..75703a957 --- /dev/null +++ b/test cases/rust/30 cargo workspace/subprojects/foo/src/member2/src/lib.rs @@ -0,0 +1,5 @@ +#[cfg(feature = "f1")] +#[cfg(feature = "f2")] +pub fn member2() -> i32 { + 1 +} diff --git a/test cases/rust/30 cargo workspace/test_foo_1.c b/test cases/rust/30 cargo workspace/test_foo_1.c new file mode 100644 index 000000000..d5f12a6ee --- /dev/null +++ b/test cases/rust/30 cargo workspace/test_foo_1.c @@ -0,0 +1,5 @@ +extern int foo(void); + +int main(void) { + return foo() == 3 ? 0 : 1; +} diff --git a/test cases/rust/30 cargo workspace/test_foo_1.rs b/test cases/rust/30 cargo workspace/test_foo_1.rs new file mode 100644 index 000000000..7d1ebb757 --- /dev/null +++ b/test cases/rust/30 cargo workspace/test_foo_1.rs @@ -0,0 +1,5 @@ +extern crate foo; + +pub fn main() { + assert!(foo::foo() == 3); +} |
