aboutsummaryrefslogtreecommitdiff
path: root/unittests/cargotests.py
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/cargotests.py')
-rw-r--r--unittests/cargotests.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/unittests/cargotests.py b/unittests/cargotests.py
index f0aedd0..d1ac838 100644
--- a/unittests/cargotests.py
+++ b/unittests/cargotests.py
@@ -3,9 +3,12 @@
from __future__ import annotations
import unittest
+import os
+import tempfile
+import textwrap
import typing as T
-from mesonbuild.cargo import builder, cfg
+from mesonbuild.cargo import builder, cfg, load_wraps
from mesonbuild.cargo.cfg import TokenType
from mesonbuild.cargo.version import convert
@@ -185,3 +188,34 @@ class CargoCfgTest(unittest.TestCase):
with self.subTest():
value = cfg.ir_to_meson(cfg.parse(iter(cfg.lexer(data))), build)
self.assertEqual(value, expected)
+
+class CargoLockTest(unittest.TestCase):
+ def test_cargo_lock(self) -> None:
+ with tempfile.TemporaryDirectory() as tmpdir:
+ with open(os.path.join(tmpdir, 'Cargo.lock'), 'w', encoding='utf-8') as f:
+ f.write(textwrap.dedent('''\
+ version = 3
+ [[package]]
+ name = "foo"
+ version = "0.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+ [[package]]
+ name = "bar"
+ version = "0.1"
+ source = "git+https://github.com/gtk-rs/gtk-rs-core?branch=0.19#23c5599424cc75ec66618891c915d9f490f6e4c2"
+ '''))
+ wraps = load_wraps(tmpdir, 'subprojects')
+ self.assertEqual(len(wraps), 2)
+ self.assertEqual(wraps[0].name, 'foo-0.1-rs')
+ self.assertEqual(wraps[0].directory, 'foo-0.1')
+ self.assertEqual(wraps[0].type, 'file')
+ self.assertEqual(wraps[0].get('method'), 'cargo')
+ self.assertEqual(wraps[0].get('source_url'), 'https://crates.io/api/v1/crates/foo/0.1/download')
+ self.assertEqual(wraps[0].get('source_hash'), '8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb')
+ self.assertEqual(wraps[1].name, 'bar-0.1-rs')
+ self.assertEqual(wraps[1].directory, 'bar')
+ self.assertEqual(wraps[1].type, 'git')
+ self.assertEqual(wraps[1].get('method'), 'cargo')
+ self.assertEqual(wraps[1].get('url'), 'https://github.com/gtk-rs/gtk-rs-core')
+ self.assertEqual(wraps[1].get('revision'), '23c5599424cc75ec66618891c915d9f490f6e4c2')