Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2e43c66

Browse files
noirbizarrewoile
authored andcommitted
test(providers): factorize some version providers tests
1 parent 3a1af6a commit 2e43c66

File tree

2 files changed

+89
-119
lines changed

2 files changed

+89
-119
lines changed

‎tests/commands/test_version_command.py‎

Lines changed: 6 additions & 1 deletion
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

‎tests/test_version_providers.py‎

Lines changed: 83 additions & 118 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /