Soft comparison of --required-version (#2832)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Felix Hildén <felix.hilden@gmail.com>
This commit is contained in:
Frédérik Paradis 2022-01-30 16:42:56 -05:00 committed by GitHub
parent f61299a62a
commit cae7ae3a4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 2 deletions

View File

@ -5,6 +5,7 @@
### Configuration
- Do not format `__pypackages__` directories by default (#2836)
- Add support for specifying stable version with `--required-version` (#2832).
## 22.1.0

View File

@ -291,7 +291,8 @@ def validate_regex(
type=str,
help=(
"Require a specific version of Black to be running (useful for unifying results"
" across many environments e.g. with a pyproject.toml file)."
" across many environments e.g. with a pyproject.toml file). It can be"
" either a major version number or an exact version."
),
)
@click.option(
@ -474,7 +475,11 @@ def main(
out(f"Using configuration in '{config}'.", fg="blue")
error_msg = "Oh no! 💥 💔 💥"
if required_version and required_version != __version__:
if (
required_version
and required_version != __version__
and required_version != __version__.split(".")[0]
):
err(
f"{error_msg} The required version `{required_version}` does not match"
f" the running version `{__version__}`!"

View File

@ -1198,6 +1198,20 @@ def test_required_version_matches_version(self) -> None:
ignore_config=True,
)
def test_required_version_matches_partial_version(self) -> None:
self.invokeBlack(
["--required-version", black.__version__.split(".")[0], "-c", "0"],
exit_code=0,
ignore_config=True,
)
def test_required_version_does_not_match_on_minor_version(self) -> None:
self.invokeBlack(
["--required-version", black.__version__.split(".")[0] + ".999", "-c", "0"],
exit_code=1,
ignore_config=True,
)
def test_required_version_does_not_match_version(self) -> None:
result = BlackRunner().invoke(
black.main,