Skip to content

Commit ef70ba3

Browse files
bonzinidcbaker
authored andcommitted
unittests/cargotests: add tests for workspace inheritance
Signed-off-by: Paolo Bonzini <[email protected]>
1 parent f47ced8 commit ef70ba3

File tree

1 file changed

+70
-1
lines changed

1 file changed

+70
-1
lines changed

unittests/cargotests.py

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
from mesonbuild.cargo import cfg, load_wraps
1212
from mesonbuild.cargo.cfg import TokenType
13-
from mesonbuild.cargo.manifest import Manifest
13+
from mesonbuild.cargo.manifest import Dependency, Manifest, Package, Workspace
1414
from mesonbuild.cargo.toml import load_toml
1515
from mesonbuild.cargo.version import convert
1616

@@ -272,6 +272,75 @@ class CargoTomlTest(unittest.TestCase):
272272
]
273273
''')
274274

275+
CARGO_TOML_WS = textwrap.dedent('''\
276+
[workspace]
277+
resolver = "2"
278+
members = ["tutorial"]
279+
280+
[workspace.package]
281+
version = "0.14.0-alpha.1"
282+
repository = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs"
283+
edition = "2021"
284+
rust-version = "1.83"
285+
286+
[workspace.dependencies]
287+
glib = { path = "glib" }
288+
gtk = { package = "gtk4", version = "0.9" }
289+
once_cell = "1.0"
290+
syn = { version = "2", features = ["parse"] }
291+
''')
292+
293+
def test_cargo_toml_ws_package(self) -> None:
294+
with tempfile.TemporaryDirectory() as tmpdir:
295+
fname = os.path.join(tmpdir, 'Cargo.toml')
296+
with open(fname, 'w', encoding='utf-8') as f:
297+
f.write(self.CARGO_TOML_WS)
298+
workspace_toml = load_toml(fname)
299+
300+
workspace = Workspace.from_raw(workspace_toml)
301+
pkg = Package.from_raw({'name': 'foo', 'version': {'workspace': True}}, workspace)
302+
self.assertEqual(pkg.name, 'foo')
303+
self.assertEqual(pkg.version, '0.14.0-alpha.1')
304+
self.assertEqual(pkg.edition, '2015')
305+
self.assertEqual(pkg.repository, None)
306+
307+
def test_cargo_toml_ws_dependency(self) -> None:
308+
with tempfile.TemporaryDirectory() as tmpdir:
309+
fname = os.path.join(tmpdir, 'Cargo.toml')
310+
with open(fname, 'w', encoding='utf-8') as f:
311+
f.write(self.CARGO_TOML_WS)
312+
workspace_toml = load_toml(fname)
313+
314+
workspace = Workspace.from_raw(workspace_toml)
315+
dep = Dependency.from_raw('glib', {'workspace': True}, 'member', workspace)
316+
self.assertEqual(dep.package, 'glib')
317+
self.assertEqual(dep.version, '')
318+
self.assertEqual(dep.meson_version, [])
319+
self.assertEqual(dep.path, os.path.join('..', 'glib'))
320+
self.assertEqual(dep.features, [])
321+
322+
dep = Dependency.from_raw('gtk', {'workspace': True}, 'member', workspace)
323+
self.assertEqual(dep.package, 'gtk4')
324+
self.assertEqual(dep.version, '0.9')
325+
self.assertEqual(dep.meson_version, ['>= 0.9', '< 0.10'])
326+
self.assertEqual(dep.api, '0.9')
327+
self.assertEqual(dep.features, [])
328+
329+
dep = Dependency.from_raw('once_cell', {'workspace': True, 'optional': True}, 'member', workspace)
330+
self.assertEqual(dep.package, 'once_cell')
331+
self.assertEqual(dep.version, '1.0')
332+
self.assertEqual(dep.meson_version, ['>= 1.0', '< 2'])
333+
self.assertEqual(dep.api, '1')
334+
self.assertEqual(dep.features, [])
335+
self.assertTrue(dep.optional)
336+
337+
dep = Dependency.from_raw('syn', {'workspace': True, 'features': ['full']}, 'member', workspace)
338+
self.assertEqual(dep.package, 'syn')
339+
self.assertEqual(dep.version, '2')
340+
self.assertEqual(dep.meson_version, ['>= 2', '< 3'])
341+
self.assertEqual(dep.api, '2')
342+
self.assertEqual(sorted(set(dep.features)), ['full', 'parse'])
343+
275344
def test_cargo_toml_package(self) -> None:
276345
with tempfile.TemporaryDirectory() as tmpdir:
277346
fname = os.path.join(tmpdir, 'Cargo.toml')

0 commit comments

Comments
 (0)