Skip to content

Commit d14218b

Browse files
tunakasifLee-W
authored andcommitted
test: add test for cargo provider with lock files
Add a test to check the behavior of the cargo provider when a `Cargo.lock` file is present. This test ensures that the `CargoProvider` behaves correctly when the lock file is present, and updates both the `Cargo.lock` and `Cargo.toml` files accordingly.
1 parent aabeae3 commit d14218b

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

tests/providers/test_cargo_provider.py

+69
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,32 @@
3333
version = "42.1"
3434
"""
3535

36+
CARGO_LOCK = """\
37+
[[package]]
38+
name = "whatever"
39+
version = "0.1.0"
40+
source = "registry+https://github.com/rust-lang/crates.io-index"
41+
checksum = "123abc"
42+
dependencies = [
43+
"packageA",
44+
"packageB",
45+
"packageC",
46+
]
47+
"""
48+
49+
CARGO_LOCK_EXPECTED = """\
50+
[[package]]
51+
name = "whatever"
52+
version = "42.1"
53+
source = "registry+https://github.com/rust-lang/crates.io-index"
54+
checksum = "123abc"
55+
dependencies = [
56+
"packageA",
57+
"packageB",
58+
"packageC",
59+
]
60+
"""
61+
3662

3763
@pytest.mark.parametrize(
3864
"content, expected",
@@ -58,3 +84,46 @@ def test_cargo_provider(
5884

5985
provider.set_version("42.1")
6086
assert file.read_text() == dedent(expected)
87+
88+
89+
@pytest.mark.parametrize(
90+
"toml_content, lock_content, toml_expected, lock_expected",
91+
(
92+
(
93+
CARGO_TOML,
94+
CARGO_LOCK,
95+
CARGO_TOML_EXPECTED,
96+
CARGO_LOCK_EXPECTED,
97+
),
98+
(
99+
CARGO_WORKSPACE_TOML,
100+
CARGO_LOCK,
101+
CARGO_WORKSPACE_TOML_EXPECTED,
102+
CARGO_LOCK_EXPECTED,
103+
),
104+
),
105+
)
106+
def test_cargo_provider_with_lock(
107+
config: BaseConfig,
108+
chdir: Path,
109+
toml_content: str,
110+
lock_content: str,
111+
toml_expected: str,
112+
lock_expected: str,
113+
):
114+
filename = CargoProvider.filename
115+
file = chdir / filename
116+
file.write_text(dedent(toml_content))
117+
118+
lock_filename = CargoProvider.lock_filename
119+
lock_file = chdir / lock_filename
120+
lock_file.write_text(dedent(lock_content))
121+
config.settings["version_provider"] = "cargo"
122+
123+
provider = get_provider(config)
124+
assert isinstance(provider, CargoProvider)
125+
assert provider.get_version() == "0.1.0"
126+
127+
provider.set_version("42.1")
128+
assert file.read_text() == dedent(toml_expected)
129+
assert lock_file.read_text() == dedent(lock_expected)

0 commit comments

Comments
 (0)