summaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-10-24 10:24:45 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2025-12-22 11:59:07 +0100
commit7a1aa179087a274d6f6b13c2c666043ac9760ea5 (patch)
treeb9bf5eed53e6a3ff41dee74b6429ef2916dae37a /test cases
parent9752def1c96eb32dc37c32398a0fe8802392fbc9 (diff)
downloadmeson-7a1aa179087a274d6f6b13c2c666043ac9760ea5.tar.gz
modules: rust: implement workspace.package()
Note that, as shown in the testcase, package() works in the subproject as well. This means that in the future the Cargo code generator can be changed to reduce the amount of generated code and instead rely on the package object. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'test cases')
-rw-r--r--test cases/rust/31 rust.workspace package/meson.build15
-rw-r--r--test cases/rust/31 rust.workspace package/subprojects/answer-2.1/meson.build4
-rw-r--r--test cases/rust/32 rust.workspace workspace/meson.build15
-rw-r--r--test cases/rust/32 rust.workspace workspace/subprojects/answer-2.1/meson.build4
4 files changed, 38 insertions, 0 deletions
diff --git a/test cases/rust/31 rust.workspace package/meson.build b/test cases/rust/31 rust.workspace package/meson.build
index d6e9aa42d..ec37a33d7 100644
--- a/test cases/rust/31 rust.workspace package/meson.build
+++ b/test cases/rust/31 rust.workspace package/meson.build
@@ -6,6 +6,13 @@ cargo_ws = rust.workspace()
# Test workspace.packages() method
assert(cargo_ws.packages() == ['answer', 'hello', 'package_test'])
+main_pkg = cargo_ws.package()
+assert(main_pkg.name() == 'package_test')
+assert(main_pkg.version() == '0.1.0')
+assert(main_pkg.api() == '0.1')
+assert(main_pkg.all_features() == ['answer', 'default', 'feature1', 'feature2'])
+assert(main_pkg.features() == ['default', 'feature1'])
+
hello_rs = cargo_ws.subproject('hello')
assert(hello_rs.name() == 'hello')
assert(hello_rs.version() == '1.0.0')
@@ -25,6 +32,14 @@ e = executable('package-test', 'src/main.rs',
)
test('package-test', e)
+# failure test cases for package()
+testcase expect_error('argument to package() cannot be a subproject')
+ cargo_ws.package('hello')
+endtestcase
+testcase expect_error('workspace member "nonexistent" not found')
+ cargo_ws.package('nonexistent')
+endtestcase
+
# failure test cases for dependency()
testcase expect_error('package.dependency.*must be one of c, proc-macro, rust.*', how: 're')
hello_rs.dependency(rust_abi: 'something else')
diff --git a/test cases/rust/31 rust.workspace package/subprojects/answer-2.1/meson.build b/test cases/rust/31 rust.workspace package/subprojects/answer-2.1/meson.build
index e8d10117f..ece234f27 100644
--- a/test cases/rust/31 rust.workspace package/subprojects/answer-2.1/meson.build
+++ b/test cases/rust/31 rust.workspace package/subprojects/answer-2.1/meson.build
@@ -4,6 +4,10 @@ rust = import('rust')
cargo_ws = rust.workspace()
assert(cargo_ws.packages() == ['answer'])
+answer_pkg = cargo_ws.package()
+assert(answer_pkg.all_features() == ['default', 'large'])
+assert(answer_pkg.features() == ['default', 'large'])
+
l = static_library('answer', 'src/lib.rs', rust_args: ['--cfg', 'feature="large"'])
dep = declare_dependency(link_with: l)
meson.override_dependency('answer-2-rs', dep)
diff --git a/test cases/rust/32 rust.workspace workspace/meson.build b/test cases/rust/32 rust.workspace workspace/meson.build
index 2626d3d50..185759413 100644
--- a/test cases/rust/32 rust.workspace workspace/meson.build
+++ b/test cases/rust/32 rust.workspace workspace/meson.build
@@ -6,6 +6,13 @@ cargo_ws = rust.workspace()
# Test workspace.packages() method
assert(cargo_ws.packages() == ['answer', 'hello', 'workspace_test'])
+main_pkg = cargo_ws.package()
+assert(main_pkg.name() == 'workspace_test')
+assert(main_pkg.version() == '0.1.0')
+assert(main_pkg.api() == '0.1')
+assert(main_pkg.all_features() == ['answer', 'default', 'feature1', 'feature2'])
+assert(main_pkg.features() == ['default', 'feature1'])
+
hello_rs = cargo_ws.subproject('hello')
assert(hello_rs.name() == 'hello')
assert(hello_rs.version() == '1.0.0')
@@ -25,6 +32,14 @@ e = executable('workspace-test', 'src/main.rs',
)
test('workspace-test', e)
+# failure test cases for package()
+testcase expect_error('argument to package() cannot be a subproject')
+ cargo_ws.package('hello')
+endtestcase
+testcase expect_error('workspace member "nonexistent" not found')
+ cargo_ws.package('nonexistent')
+endtestcase
+
# failure test cases for dependency()
testcase expect_error('package.dependency.*must be one of c, proc-macro, rust.*', how: 're')
hello_rs.dependency(rust_abi: 'something else')
diff --git a/test cases/rust/32 rust.workspace workspace/subprojects/answer-2.1/meson.build b/test cases/rust/32 rust.workspace workspace/subprojects/answer-2.1/meson.build
index e8d10117f..ece234f27 100644
--- a/test cases/rust/32 rust.workspace workspace/subprojects/answer-2.1/meson.build
+++ b/test cases/rust/32 rust.workspace workspace/subprojects/answer-2.1/meson.build
@@ -4,6 +4,10 @@ rust = import('rust')
cargo_ws = rust.workspace()
assert(cargo_ws.packages() == ['answer'])
+answer_pkg = cargo_ws.package()
+assert(answer_pkg.all_features() == ['default', 'large'])
+assert(answer_pkg.features() == ['default', 'large'])
+
l = static_library('answer', 'src/lib.rs', rust_args: ['--cfg', 'feature="large"'])
dep = declare_dependency(link_with: l)
meson.override_dependency('answer-2-rs', dep)