From f58dfda489a7e3b65dc306647c607851bcbd1a5a Mon Sep 17 00:00:00 2001 From: Konstantinos Lampridis Date: Fri, 16 May 2025 00:36:34 +0300 Subject: [PATCH 1/4] fix: --version CLI flag --- src/cookiecutter_python/cli.py | 5 ++-- tests/test_version_string.py | 48 ++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 tests/test_version_string.py diff --git a/src/cookiecutter_python/cli.py b/src/cookiecutter_python/cli.py index 97b598cc..2798b2f1 100644 --- a/src/cookiecutter_python/cli.py +++ b/src/cookiecutter_python/cli.py @@ -1,6 +1,7 @@ """Main `cookiecutter_python` CLI.""" import os +import typing as t import sys import click @@ -17,10 +18,10 @@ def version_msg(): """Message about Python Generator version, location and Python version.""" - python_version = sys.version[:3] + python_version: t.Tuple[int, int, int] = sys.version_info[:3] message = u'Python Generator %(version)s from {} (Python {})' location = os.path.dirname(this_file_location) - return message.format(location, python_version) + return message.format(location, ".".join(map(str, python_version))) @click.command(context_settings=dict(help_option_names=[u'-h', u'--help'])) diff --git a/tests/test_version_string.py b/tests/test_version_string.py new file mode 100644 index 00000000..7654c086 --- /dev/null +++ b/tests/test_version_string.py @@ -0,0 +1,48 @@ +from pathlib import Path +import pytest + + +def test_version_msg_function_returns_expected_string(distro_loc: Path): + + # GIVEN the version_msg function + from cookiecutter_python.cli import version_msg + + # WHEN the version_msg function is called + result: str = version_msg() + + # THEN it should return the expected string + import sys + EXPECTED_PYTHON_VERSION: str = ".".join(map(str, sys.version_info[:3])) + + EXPECTED_PARENT_DIR_OF_COOKIECUTTER_PYTHON: Path = distro_loc.parent + + assert result == ( + f'Python Generator %(version)s from {EXPECTED_PARENT_DIR_OF_COOKIECUTTER_PYTHON} (Python {EXPECTED_PYTHON_VERSION})' + ) + + +@pytest.mark.runner_setup(mix_stderr=False) +def test_cli_version_flag_returns_expected_string( + distro_loc: Path, + isolated_cli_runner, +): + from cookiecutter_python.cli import main + from cookiecutter_python import __version__ + + result = isolated_cli_runner.invoke( + main, + args=['--version'], + input=None, + env=None, + catch_exceptions=False, + ) + assert result.exit_code == 0 + + import sys + EXPECTED_PYTHON_VERSION: str = ".".join(map(str, sys.version_info[:3])) + + EXPECTED_PARENT_DIR_OF_COOKIECUTTER_PYTHON: Path = distro_loc.parent + + assert result.stdout == ( + f'Python Generator {__version__} from {EXPECTED_PARENT_DIR_OF_COOKIECUTTER_PYTHON} (Python {EXPECTED_PYTHON_VERSION})\n' + ) From 826f4b6ec206ef42c4caa9d9bcf5933e539d2a6d Mon Sep 17 00:00:00 2001 From: Konstantinos Lampridis Date: Fri, 16 May 2025 00:36:41 +0300 Subject: [PATCH 2/4] refactor(isort): apply isort --- src/cookiecutter_python/cli.py | 2 +- tests/test_version_string.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cookiecutter_python/cli.py b/src/cookiecutter_python/cli.py index 2798b2f1..6df563f3 100644 --- a/src/cookiecutter_python/cli.py +++ b/src/cookiecutter_python/cli.py @@ -1,8 +1,8 @@ """Main `cookiecutter_python` CLI.""" import os -import typing as t import sys +import typing as t import click diff --git a/tests/test_version_string.py b/tests/test_version_string.py index 7654c086..c8020884 100644 --- a/tests/test_version_string.py +++ b/tests/test_version_string.py @@ -1,4 +1,5 @@ from pathlib import Path + import pytest @@ -26,8 +27,8 @@ def test_cli_version_flag_returns_expected_string( distro_loc: Path, isolated_cli_runner, ): - from cookiecutter_python.cli import main from cookiecutter_python import __version__ + from cookiecutter_python.cli import main result = isolated_cli_runner.invoke( main, From aa485b6ad5d006d1958a3851ee1fb913d012f476 Mon Sep 17 00:00:00 2001 From: Konstantinos Lampridis Date: Fri, 16 May 2025 00:36:42 +0300 Subject: [PATCH 3/4] refactor(black): apply black --- tests/test_version_string.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_version_string.py b/tests/test_version_string.py index c8020884..c867e871 100644 --- a/tests/test_version_string.py +++ b/tests/test_version_string.py @@ -4,7 +4,6 @@ def test_version_msg_function_returns_expected_string(distro_loc: Path): - # GIVEN the version_msg function from cookiecutter_python.cli import version_msg @@ -13,6 +12,7 @@ def test_version_msg_function_returns_expected_string(distro_loc: Path): # THEN it should return the expected string import sys + EXPECTED_PYTHON_VERSION: str = ".".join(map(str, sys.version_info[:3])) EXPECTED_PARENT_DIR_OF_COOKIECUTTER_PYTHON: Path = distro_loc.parent @@ -40,6 +40,7 @@ def test_cli_version_flag_returns_expected_string( assert result.exit_code == 0 import sys + EXPECTED_PYTHON_VERSION: str = ".".join(map(str, sys.version_info[:3])) EXPECTED_PARENT_DIR_OF_COOKIECUTTER_PYTHON: Path = distro_loc.parent From df896d61e231e00e2f4172cbd3283e52946aa971 Mon Sep 17 00:00:00 2001 From: Konstantinos Lampridis Date: Fri, 16 May 2025 00:48:58 +0300 Subject: [PATCH 4/4] test: fix integration tests --- tests/test_build_backend_sdist.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_build_backend_sdist.py b/tests/test_build_backend_sdist.py index dcf3baa6..2cdfdf82 100644 --- a/tests/test_build_backend_sdist.py +++ b/tests/test_build_backend_sdist.py @@ -146,6 +146,7 @@ def sdist_expected_correct_file_structure(): # 'src/stubs/requests_futures/sessions.pyi', ) TESTS = ( + 'tests/test_version_string.py', 'tests/test_git_sdk.py', 'tests/test_git_porcelain.py', 'tests/test_is_repo_clean_function.py',