summaryrefslogtreecommitdiff
path: root/test cases/rust/32 rust.workspace workspace/meson.build
blob: 63df7b1c443feafe831cd8868a89eacdd76aa7d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
project('workspace test', 'rust', default_options: ['rust_std=2021'])

rust = import('rust')
cargo_ws = rust.workspace()

# Test workspace.packages() method
assert(cargo_ws.packages() == ['answer', 'hello', 'more', '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')
assert(hello_rs.api() == '1')
assert(hello_rs.all_features() == ['default', 'goodbye'])
assert(hello_rs.features() == ['default', 'goodbye'])

answer_rs = cargo_ws.subproject('answer', '2')
assert(answer_rs.name() == 'answer')
assert(answer_rs.version() == '2.1.0')
assert(answer_rs.api() == '2')
assert(answer_rs.all_features() == ['default', 'large'])
assert(answer_rs.features() == ['default', 'large'])

subdir('more')

e = executable('workspace-test', 'src/main.rs',
  dependencies: main_pkg.dependencies(),
  rust_args: main_pkg.rust_args(),
  rust_dependency_map: main_pkg.rust_dependency_map(),
)
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')
endtestcase
testcase expect_error('Package hello does not support ABI c')
  hello_rs.dependency(rust_abi: 'c')
endtestcase