Skip to content

Commit 78c3dd7

Browse files
committed
test(providers): factorize some version providers tests
1 parent 6e59c66 commit 78c3dd7

File tree

2 files changed

+89
-119
lines changed

2 files changed

+89
-119
lines changed

Diff for: tests/commands/test_version_command.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@ def test_version_use_version_provider(
9393

9494
commands.Version(
9595
config,
96-
{"report": False, "project": project, "commitizen": False, "verbose": True},
96+
{
97+
"report": False,
98+
"project": project,
99+
"commitizen": False,
100+
"verbose": not project,
101+
},
97102
)()
98103
captured = capsys.readouterr()
99104

Diff for: tests/test_version_providers.py

+83-118
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from pathlib import Path
55
from textwrap import dedent
6-
from typing import TYPE_CHECKING, Iterator, Optional
6+
from typing import TYPE_CHECKING, Iterator, Optional, Type
77

88
import pytest
99

@@ -17,6 +17,7 @@
1717
Pep621Provider,
1818
PoetryProvider,
1919
ScmProvider,
20+
VersionProvider,
2021
get_provider,
2122
)
2223
from tests.utils import create_file_and_commit, create_tag
@@ -56,137 +57,101 @@ def test_commitizen_provider(config: BaseConfig, mocker: MockerFixture):
5657
mock.assert_called_once_with("version", "43.1")
5758

5859

59-
def test_pep621_provider(config: BaseConfig, chdir: Path):
60-
pyproject_toml = chdir / "pyproject.toml"
61-
pyproject_toml.write_text(
62-
dedent(
63-
"""\
64-
[project]
65-
version = "0.1.0"
66-
"""
67-
)
68-
)
69-
70-
provider = Pep621Provider(config)
71-
72-
assert provider.get_version() == "0.1.0"
73-
74-
provider.set_version("43.1")
75-
76-
assert pyproject_toml.read_text() == dedent(
60+
FILE_PROVIDERS = dict(
61+
pep621=(
62+
"pyproject.toml",
63+
Pep621Provider,
7764
"""\
7865
[project]
79-
version = "43.1"
80-
"""
81-
)
82-
83-
84-
def test_poetry_provider(config: BaseConfig, chdir: Path):
85-
pyproject_toml = chdir / "pyproject.toml"
86-
pyproject_toml.write_text(
87-
dedent(
88-
"""\
89-
[tool.poetry]
90-
version = "0.1.0"
91-
"""
92-
)
93-
)
94-
config.settings["version_provider"] = "poetry"
95-
96-
provider = get_provider(config)
97-
assert isinstance(provider, PoetryProvider)
98-
assert provider.get_version() == "0.1.0"
99-
100-
provider.set_version("43.1")
101-
assert pyproject_toml.read_text() == dedent(
66+
version = "0.1.0"
67+
""",
68+
"""\
69+
[project]
70+
version = "42.1"
71+
""",
72+
),
73+
poetry=(
74+
"pyproject.toml",
75+
PoetryProvider,
10276
"""\
10377
[tool.poetry]
104-
version = "43.1"
105-
"""
106-
)
107-
108-
109-
def test_cargo_provider(config: BaseConfig, chdir: Path):
110-
cargo_toml = chdir / "Cargo.toml"
111-
cargo_toml.write_text(
112-
dedent(
113-
"""\
114-
[package]
115-
version = "0.1.0"
116-
"""
117-
)
118-
)
119-
config.settings["version_provider"] = "cargo"
120-
121-
provider = get_provider(config)
122-
assert isinstance(provider, CargoProvider)
123-
assert provider.get_version() == "0.1.0"
124-
125-
provider.set_version("43.1")
126-
assert cargo_toml.read_text() == dedent(
78+
version = "0.1.0"
79+
""",
80+
"""\
81+
[tool.poetry]
82+
version = "42.1"
83+
""",
84+
),
85+
cargo=(
86+
"Cargo.toml",
87+
CargoProvider,
12788
"""\
12889
[package]
129-
version = "43.1"
130-
"""
131-
)
132-
133-
134-
def test_npm_provider(config: BaseConfig, chdir: Path):
135-
package_json = chdir / "package.json"
136-
package_json.write_text(
137-
dedent(
138-
"""\
139-
{
140-
"name": "whatever",
141-
"version": "0.1.0"
142-
}
143-
"""
144-
)
145-
)
146-
config.settings["version_provider"] = "npm"
147-
148-
provider = get_provider(config)
149-
assert isinstance(provider, NpmProvider)
150-
assert provider.get_version() == "0.1.0"
151-
152-
provider.set_version("43.1")
153-
assert package_json.read_text() == dedent(
90+
version = "0.1.0"
91+
""",
92+
"""\
93+
[package]
94+
version = "42.1"
95+
""",
96+
),
97+
npm=(
98+
"package.json",
99+
NpmProvider,
154100
"""\
155101
{
156102
"name": "whatever",
157-
"version": "43.1"
103+
"version": "0.1.0"
158104
}
159-
"""
160-
)
161-
162-
163-
def test_composer_provider(config: BaseConfig, chdir: Path):
164-
composer_json = chdir / "composer.json"
165-
composer_json.write_text(
166-
dedent(
167-
"""\
168-
{
169-
"name": "whatever",
170-
"version": "0.1.0"
171-
}
172-
"""
173-
)
174-
)
175-
config.settings["version_provider"] = "composer"
176-
177-
provider = get_provider(config)
178-
assert isinstance(provider, ComposerProvider)
179-
assert provider.get_version() == "0.1.0"
180-
181-
provider.set_version("43.1")
182-
assert composer_json.read_text() == dedent(
105+
""",
106+
"""\
107+
{
108+
"name": "whatever",
109+
"version": "42.1"
110+
}
111+
""",
112+
),
113+
composer=(
114+
"composer.json",
115+
ComposerProvider,
183116
"""\
184117
{
185118
"name": "whatever",
186-
"version": "43.1"
119+
"version": "0.1.0"
187120
}
188-
"""
189-
)
121+
""",
122+
"""\
123+
{
124+
"name": "whatever",
125+
"version": "42.1"
126+
}
127+
""",
128+
),
129+
)
130+
131+
132+
@pytest.mark.parametrize(
133+
"id,filename,cls,content,expected",
134+
(pytest.param(id, *FILE_PROVIDERS[id], id=id) for id in FILE_PROVIDERS),
135+
)
136+
def test_file_providers(
137+
config: BaseConfig,
138+
chdir: Path,
139+
id: str,
140+
filename: str,
141+
cls: Type[VersionProvider],
142+
content: str,
143+
expected: str,
144+
):
145+
file = chdir / filename
146+
file.write_text(dedent(content))
147+
config.settings["version_provider"] = id
148+
149+
provider = get_provider(config)
150+
assert isinstance(provider, cls)
151+
assert provider.get_version() == "0.1.0"
152+
153+
provider.set_version("42.1")
154+
assert file.read_text() == dedent(expected)
190155

191156

192157
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)