diff --git a/CHANGELOG.md b/CHANGELOG.md index 86c0543..1e5aaf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,11 +12,12 @@ - New gitlab #2: Added `grep` subcommand to find and debug patterns. - New: Added better error messages to debug regular expressions. - New gitlab #10: `--pin-date` to keep date parts unchanged, and only increment non-date parts. + - New gitlab #9: Make commit message configurable. - New: Added `--release-num` to increment the `alphaN`/`betaN`/`a0`/`b0`/etc. release number - New: Added `--date=` parameter to set explicit date (instead of current date). - - Fix gitlab #8: Push tags only pushed tags, not actual commit. - - Fix gitlab #9: Make commit message configurable. + - Fix gitlab #12: Error sorting non-lexical version tags (e.g. semver). - Fix gitlab #11: Show regexp when `--verbose` is used. + - Fix gitlab #8: Push now also pushes HEAD (used to only push the tag). - Fix: Disallow `--release=dev` which has different semantics than other release tags. - Fix: Entries in `file_patterns` were ignored if there were multiple for the same file. - Switch main repo from gitlab to github. diff --git a/setup.cfg b/setup.cfg index 315ea5b..8e3ef87 100644 --- a/setup.cfg +++ b/setup.cfg @@ -20,7 +20,7 @@ warn_redundant_casts = True [tool:isort] known_first_party = pycalver -known_third_party = click,pathlib2,lexid +known_third_party = click,pathlib2,lexid,pkg_resources force_single_line = True length_sort = True diff --git a/src/pycalver/__main__.py b/src/pycalver/__main__.py index 8682761..ea399ee 100755 --- a/src/pycalver/__main__.py +++ b/src/pycalver/__main__.py @@ -18,10 +18,9 @@ import subprocess as sp import click import colorama +import pkg_resources from . import vcs -from . import v1cli -from . import v2cli from . import config from . import rewrite from . import version @@ -339,6 +338,25 @@ def _colored_diff_lines(diff: str) -> typ.Iterable[str]: yield line +def _v2_get_diff(cfg: config.Config, new_version: str) -> str: + old_vinfo = v2version.parse_version_info(cfg.current_version, cfg.version_pattern) + new_vinfo = v2version.parse_version_info(new_version, cfg.version_pattern) + return v2rewrite.diff(old_vinfo, new_vinfo, cfg.file_patterns) + + +def _v1_get_diff(cfg: config.Config, new_version: str) -> str: + old_vinfo = v1version.parse_version_info(cfg.current_version, cfg.version_pattern) + new_vinfo = v1version.parse_version_info(new_version, cfg.version_pattern) + return v1rewrite.diff(old_vinfo, new_vinfo, cfg.file_patterns) + + +def get_diff(cfg, new_version) -> str: + if cfg.is_new_pattern: + return _v2_get_diff(cfg, new_version) + else: + return _v1_get_diff(cfg, new_version) + + def _print_diff_str(diff: str) -> None: colored_diff = "\n".join(_colored_diff_lines(diff)) if sys.stdout.isatty(): @@ -349,11 +367,7 @@ def _print_diff_str(diff: str) -> None: def _print_diff(cfg: config.Config, new_version: str) -> None: try: - if cfg.is_new_pattern: - diff = v2cli.get_diff(cfg, new_version) - else: - diff = v1cli.get_diff(cfg, new_version) - + diff = get_diff(cfg, new_version) _print_diff_str(diff) except rewrite.NoPatternMatch as ex: logger.error(str(ex)) @@ -489,9 +503,29 @@ def _update_cfg_from_vcs(cfg: config.Config, fetch: bool) -> config.Config: all_tags = vcs.get_tags(fetch=fetch) if cfg.is_new_pattern: - return v2cli.update_cfg_from_vcs(cfg, all_tags) + version_tags = [tag for tag in all_tags if v2version.is_valid(tag, cfg.version_pattern)] else: - return v1cli.update_cfg_from_vcs(cfg, all_tags) + version_tags = [tag for tag in all_tags if v1version.is_valid(tag, cfg.version_pattern)] + + if not version_tags: + logger.debug("no vcs tags found") + return cfg + else: + version_tags.sort(key=pkg_resources.parse_version, reverse=True) + + _debug_tags = ", ".join(version_tags[:3]) + logger.debug(f"found tags: {_debug_tags} ... ({len(version_tags)} in total)") + latest_version_tag = version_tags[0] + latest_version_pep440 = version.to_pep440(latest_version_tag) + if latest_version_tag <= cfg.current_version: + return cfg + else: + logger.info(f"Working dir version : {cfg.current_version}") + logger.info(f"Latest version from VCS tag: {latest_version_tag}") + return cfg._replace( + current_version=latest_version_tag, + pep440_version=latest_version_pep440, + ) @cli.command() diff --git a/src/pycalver/v1cli.py b/src/pycalver/v1cli.py deleted file mode 100755 index 47c3c2d..0000000 --- a/src/pycalver/v1cli.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python -# This file is part of the pycalver project -# https://github.com/mbarkhau/pycalver -# -# Copyright (c) 2018-2020 Manuel Barkhau (mbarkhau@gmail.com) - MIT License -# SPDX-License-Identifier: MIT -""" -CLI module for PyCalVer. - -Provided subcommands: show, test, init, bump -""" -import typing as typ -import logging - -from . import config -from . import version -from . import v1rewrite -from . import v1version - -logger = logging.getLogger("pycalver.v1cli") - - -def update_cfg_from_vcs(cfg: config.Config, all_tags: typ.List[str]) -> config.Config: - version_tags = [tag for tag in all_tags if v1version.is_valid(tag, cfg.version_pattern)] - if not version_tags: - logger.debug("no vcs tags found") - return cfg - - version_tags.sort(reverse=True) - _debug_tags = ", ".join(version_tags[:3]) - logger.debug(f"found tags: {_debug_tags} ... ({len(version_tags)} in total)") - latest_version_tag = version_tags[0] - latest_version_pep440 = version.to_pep440(latest_version_tag) - if latest_version_tag <= cfg.current_version: - return cfg - - logger.info(f"Working dir version : {cfg.current_version}") - logger.info(f"Latest version from VCS tag: {latest_version_tag}") - return cfg._replace( - current_version=latest_version_tag, - pep440_version=latest_version_pep440, - ) - - -def get_diff(cfg: config.Config, new_version: str) -> str: - old_vinfo = v1version.parse_version_info(cfg.current_version, cfg.version_pattern) - new_vinfo = v1version.parse_version_info(new_version , cfg.version_pattern) - return v1rewrite.diff(old_vinfo, new_vinfo, cfg.file_patterns) diff --git a/src/pycalver/v2cli.py b/src/pycalver/v2cli.py deleted file mode 100644 index 88f23a4..0000000 --- a/src/pycalver/v2cli.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python -# This file is part of the pycalver project -# https://github.com/mbarkhau/pycalver -# -# Copyright (c) 2018-2020 Manuel Barkhau (mbarkhau@gmail.com) - MIT License -# SPDX-License-Identifier: MIT -""" -CLI module for PyCalVer. - -Provided subcommands: show, test, init, bump -""" -import typing as typ -import logging - -from . import config -from . import version -from . import v2rewrite -from . import v2version - -logger = logging.getLogger("pycalver.v2cli") - - -def update_cfg_from_vcs(cfg: config.Config, all_tags: typ.List[str]) -> config.Config: - version_tags = [tag for tag in all_tags if v2version.is_valid(tag, cfg.version_pattern)] - if not version_tags: - logger.debug("no vcs tags found") - return cfg - - version_tags.sort(reverse=True) - _debug_tags = ", ".join(version_tags[:3]) - logger.debug(f"found tags: {_debug_tags} ... ({len(version_tags)} in total)") - latest_version_tag = version_tags[0] - latest_version_pep440 = version.to_pep440(latest_version_tag) - if latest_version_tag <= cfg.current_version: - return cfg - - logger.info(f"Working dir version : {cfg.current_version}") - logger.info(f"Latest version from VCS tag: {latest_version_tag}") - return cfg._replace( - current_version=latest_version_tag, - pep440_version=latest_version_pep440, - ) - - -def get_diff(cfg: config.Config, new_version: str) -> str: - old_vinfo = v2version.parse_version_info(cfg.current_version, cfg.version_pattern) - new_vinfo = v2version.parse_version_info(new_version , cfg.version_pattern) - return v2rewrite.diff(old_vinfo, new_vinfo, cfg.file_patterns) diff --git a/test/test_cli.py b/test/test_cli.py index e3922d7..ca07acd 100644 --- a/test/test_cli.py +++ b/test/test_cli.py @@ -17,12 +17,9 @@ import pytest import pathlib2 as pl from click.testing import CliRunner -from pycalver import v1cli -from pycalver import v2cli from pycalver import config +from pycalver import __main__ as main from pycalver import v1patterns -from pycalver.__main__ import cli -from pycalver.__main__ import incr_dispatch # pylint:disable=redefined-outer-name ; pytest fixtures # pylint:disable=protected-access ; allowed for test code @@ -88,7 +85,7 @@ def runner(tmpdir): def test_help(runner): - result = runner.invoke(cli, ['--help', "-vv"]) + result = runner.invoke(main.cli, ['--help', "-vv"]) assert result.exit_code == 0 assert "PyCalVer" in result.output assert "bump " in result.output @@ -98,7 +95,7 @@ def test_help(runner): def test_version(runner): - result = runner.invoke(cli, ['--version', "-vv"]) + result = runner.invoke(main.cli, ['--version', "-vv"]) assert result.exit_code == 0 assert " version v20" in result.output match = v1patterns.PYCALVER_RE.search(result.output) @@ -109,19 +106,19 @@ def test_incr_default(runner): old_version = "v201701.0004-alpha" cmd = ['test', "-vv", "--pin-date", "--release", "beta", old_version] - result = runner.invoke(cli, cmd) + result = runner.invoke(main.cli, cmd) assert result.exit_code == 0 assert "Version: v201701.0005-beta\n" in result.output cmd = ['test', "-vv", "--pin-date", "--release", "beta", old_version, "vYYYY0M.BUILD[-RELEASE]"] - result = runner.invoke(cli, cmd) + result = runner.invoke(main.cli, cmd) assert result.exit_code == 0 assert "Version: v201701.1005-beta\n" in result.output def test_incr_pin_date(runner): old_version = "v201701.0999-alpha" - result = runner.invoke(cli, ['test', "-vv", "--pin-date", old_version]) + result = runner.invoke(main.cli, ['test', "-vv", "--pin-date", old_version]) assert result.exit_code == 0 assert "Version: v201701.11000-alpha\n" in result.output @@ -137,27 +134,27 @@ def test_incr_semver(runner): old_version = "0.1.0" new_version = "0.1.1" - result = runner.invoke(cli, ['test', "-vv", "--patch", old_version, semver_pattern]) + result = runner.invoke(main.cli, ['test', "-vv", "--patch", old_version, semver_pattern]) assert result.exit_code == 0 assert f"Version: {new_version}\n" in result.output old_version = "0.1.1" new_version = "0.2.0" - result = runner.invoke(cli, ['test', "-vv", "--minor", old_version, semver_pattern]) + result = runner.invoke(main.cli, ['test', "-vv", "--minor", old_version, semver_pattern]) assert result.exit_code == 0 assert f"Version: {new_version}\n" in result.output old_version = "0.1.1" new_version = "1.0.0" - result = runner.invoke(cli, ['test', "-vv", "--major", old_version, semver_pattern]) + result = runner.invoke(main.cli, ['test', "-vv", "--major", old_version, semver_pattern]) assert result.exit_code == 0 assert f"Version: {new_version}\n" in result.output def test_incr_semver_invalid(runner, caplog): - result = runner.invoke(cli, ['test', "-vv", "--patch", "0.1.1"]) + result = runner.invoke(main.cli, ['test', "-vv", "--patch", "0.1.1"]) assert result.exit_code == 1 assert len(caplog.records) > 0 log_record = caplog.records[0] @@ -169,7 +166,7 @@ def test_incr_to_beta(runner): old_version = "v201701.0999-alpha" initial_version = config._initial_version() - result = runner.invoke(cli, ['test', old_version, "-vv", "--release", "beta"]) + result = runner.invoke(main.cli, ['test', old_version, "-vv", "--release", "beta"]) assert result.exit_code == 0 new_version = initial_version.replace(".1001-alpha", ".11000-beta") assert f"Version: {new_version}\n" in result.output @@ -179,7 +176,7 @@ def test_incr_to_final(runner): old_version = "v201701.0999-alpha" initial_version = config._initial_version() - result = runner.invoke(cli, ['test', old_version, "-vv", "--release", "final"]) + result = runner.invoke(main.cli, ['test', old_version, "-vv", "--release", "final"]) assert result.exit_code == 0 new_version = initial_version.replace(".1001-alpha", ".11000") assert f"Version: {new_version}\n" in result.output @@ -191,7 +188,7 @@ def test_incr_release_num(runner): old_version = "0.1.0b0" new_version = "0.1.0b1" - result = runner.invoke(cli, ['test', "-vv", "--release-num", old_version, semver]) + result = runner.invoke(main.cli, ['test', "-vv", "--release-num", old_version, semver]) assert result.exit_code == 0 assert f"Version: {new_version}\n" in result.output @@ -199,7 +196,7 @@ def test_incr_release_num(runner): def test_incr_invalid(runner): old_version = "v201701.0999-alpha" - result = runner.invoke(cli, ['test', old_version, "-vv", "--release", "alfa"]) + result = runner.invoke(main.cli, ['test', old_version, "-vv", "--release", "alfa"]) assert result.exit_code == 1 @@ -239,7 +236,7 @@ def _update_config_val(filename, **kwargs): def test_nocfg(runner, caplog): _add_project_files("README.md") - result = runner.invoke(cli, ['show', "-vv"]) + result = runner.invoke(main.cli, ['show', "-vv"]) assert result.exit_code == 1 expected_msg = "Could not parse configuration. Perhaps try 'pycalver init'." assert any(expected_msg in r.message for r in caplog.records) @@ -248,12 +245,12 @@ def test_nocfg(runner, caplog): def test_novcs_nocfg_init(runner, caplog): _add_project_files("README.md") # dry mode test - result = runner.invoke(cli, ['init', "-vv", "--dry"]) + result = runner.invoke(main.cli, ['init', "-vv", "--dry"]) assert result.exit_code == 0 assert not os.path.exists("pycalver.toml") # non dry mode - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 assert os.path.exists("pycalver.toml") @@ -264,12 +261,12 @@ def test_novcs_nocfg_init(runner, caplog): assert base_str in cfg_content assert config.DEFAULT_TOML_README_MD_STR in cfg_content - result = runner.invoke(cli, ['show', "-vv"]) + result = runner.invoke(main.cli, ['show', "-vv"]) assert result.exit_code == 0 assert f"Current Version: {config._initial_version()}\n" in result.output assert f"PEP440 : {config._initial_version_pep440()}\n" in result.output - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 1 # check logging @@ -281,7 +278,7 @@ def test_novcs_nocfg_init(runner, caplog): def test_novcs_setupcfg_init(runner): _add_project_files("README.md", "setup.cfg") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 with pl.Path("setup.cfg").open(mode="r", encoding="utf-8") as fobj: @@ -293,7 +290,7 @@ def test_novcs_setupcfg_init(runner): assert base_str in cfg_content assert config.DEFAULT_CONFIGPARSER_README_MD_STR in cfg_content - result = runner.invoke(cli, ['show', "-vv"]) + result = runner.invoke(main.cli, ['show', "-vv"]) assert result.exit_code == 0 assert f"Current Version: {config._initial_version()}\n" in result.output assert f"PEP440 : {config._initial_version_pep440()}\n" in result.output @@ -301,7 +298,7 @@ def test_novcs_setupcfg_init(runner): def test_novcs_pyproject_init(runner): _add_project_files("README.md", "pyproject.toml") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 with pl.Path("pyproject.toml").open(mode="r", encoding="utf-8") as fobj: @@ -311,7 +308,7 @@ def test_novcs_pyproject_init(runner): assert base_str in cfg_content assert config.DEFAULT_TOML_README_MD_STR in cfg_content - result = runner.invoke(cli, ['show']) + result = runner.invoke(main.cli, ['show']) assert result.exit_code == 0 assert f"Current Version: {config._initial_version()}\n" in result.output assert f"PEP440 : {config._initial_version_pep440()}\n" in result.output @@ -340,12 +337,12 @@ def test_git_init(runner, version_pattern): _add_project_files("README.md") _vcs_init("git") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 _update_config_val("pycalver.toml", version_pattern=version_pattern) - result = runner.invoke(cli, ['show']) + result = runner.invoke(main.cli, ['show']) assert result.exit_code == 0 assert f"Current Version: {config._initial_version()}\n" in result.output assert f"PEP440 : {config._initial_version_pep440()}\n" in result.output @@ -356,12 +353,12 @@ def test_hg_init(runner, version_pattern): _add_project_files("README.md") _vcs_init("hg") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 _update_config_val("pycalver.toml", version_pattern=version_pattern) - result = runner.invoke(cli, ['show']) + result = runner.invoke(main.cli, ['show']) assert result.exit_code == 0 assert f"Current Version: {config._initial_version()}\n" in result.output assert f"PEP440 : {config._initial_version_pep440()}\n" in result.output @@ -374,7 +371,7 @@ def test_v1_git_tag_eval(runner, version_pattern): # This will set a version that is older than the version tag # we set in the vcs, which should take precedence. - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 _update_config_val("pycalver.toml", version_pattern=version_pattern) @@ -385,7 +382,7 @@ def test_v1_git_tag_eval(runner, version_pattern): shell("git", "tag", "--annotate", tag_version, "--message", f"bump version to {tag_version}") - result = runner.invoke(cli, ['show', "-vv"]) + result = runner.invoke(main.cli, ['show', "-vv"]) assert result.exit_code == 0 assert f"Current Version: {tag_version}\n" in result.output assert f"PEP440 : {tag_version_pep440}\n" in result.output @@ -398,7 +395,7 @@ def test_hg_tag_eval(runner, version_pattern): # This will set a version that is older than the version tag # we set in the vcs, which should take precedence. - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 _update_config_val("pycalver.toml", version_pattern=version_pattern) @@ -409,7 +406,7 @@ def test_hg_tag_eval(runner, version_pattern): shell("hg", "tag", tag_version, "--message", f"bump version to {tag_version}") - result = runner.invoke(cli, ['show', "-vv"]) + result = runner.invoke(main.cli, ['show', "-vv"]) assert result.exit_code == 0 assert f"Current Version: {tag_version}\n" in result.output assert f"PEP440 : {tag_version_pep440}\n" in result.output @@ -419,12 +416,12 @@ def test_hg_tag_eval(runner, version_pattern): def test_novcs_bump(runner, version_pattern): _add_project_files("README.md") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 _update_config_val("pycalver.toml", version_pattern=version_pattern) - result = runner.invoke(cli, ['bump', "-vv"]) + result = runner.invoke(main.cli, ['bump', "-vv"]) assert result.exit_code == 0 calver = config._initial_version().split(".")[0] @@ -434,7 +431,7 @@ def test_novcs_bump(runner, version_pattern): assert calver + ".1002-alpha !\n" in content assert calver[1:] + ".1002a0 !]\n" in content - result = runner.invoke(cli, ['bump', "-vv", "--release", "beta"]) + result = runner.invoke(main.cli, ['bump', "-vv", "--release", "beta"]) assert result.exit_code == 0 with pl.Path("README.md").open() as fobj: @@ -448,7 +445,7 @@ def test_git_bump(runner, version_pattern): _add_project_files("README.md") _vcs_init("git") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 _update_config_val("pycalver.toml", version_pattern=version_pattern) @@ -456,7 +453,7 @@ def test_git_bump(runner, version_pattern): shell("git", "add", "pycalver.toml") shell("git", "commit", "-m", "initial commit") - result = runner.invoke(cli, ['bump', "-vv"]) + result = runner.invoke(main.cli, ['bump', "-vv"]) assert result.exit_code == 0 calver = config._initial_version()[:7] @@ -471,7 +468,7 @@ def test_hg_bump(runner, version_pattern): _add_project_files("README.md") _vcs_init("hg") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 _update_config_val("pycalver.toml", version_pattern=version_pattern) @@ -479,7 +476,7 @@ def test_hg_bump(runner, version_pattern): shell("hg", "add", "pycalver.toml") shell("hg", "commit", "-m", "initial commit") - result = runner.invoke(cli, ['bump', "-vv"]) + result = runner.invoke(main.cli, ['bump', "-vv"]) assert result.exit_code == 0 calver = config._initial_version()[:7] @@ -493,7 +490,7 @@ def test_empty_git_bump(runner, caplog): shell("git", "init") with pl.Path("setup.cfg").open(mode="w") as fobj: fobj.write("") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 with pl.Path("setup.cfg").open(mode="r") as fobj: @@ -504,7 +501,7 @@ def test_empty_git_bump(runner, caplog): assert "\n[pycalver:file_patterns]\n" in default_cfg_data assert "\nsetup.cfg =\n" in default_cfg_data - result = runner.invoke(cli, ['bump']) + result = runner.invoke(main.cli, ['bump']) assert any(("working directory is not clean" in r.message) for r in caplog.records) assert any(("setup.cfg" in r.message) for r in caplog.records) @@ -514,7 +511,7 @@ def test_empty_hg_bump(runner, caplog): shell("hg", "init") with pl.Path("setup.cfg").open(mode="w") as fobj: fobj.write("") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 with pl.Path("setup.cfg").open(mode="r") as fobj: @@ -525,7 +522,7 @@ def test_empty_hg_bump(runner, caplog): assert "\n[pycalver:file_patterns]\n" in default_cfg_text assert "\nsetup.cfg =\n" in default_cfg_text - result = runner.invoke(cli, ['bump']) + result = runner.invoke(main.cli, ['bump']) assert any(("working directory is not clean" in r.message) for r in caplog.records) assert any(("setup.cfg" in r.message) for r in caplog.records) @@ -565,13 +562,13 @@ def test_v1_bump_semver_warning(runner, caplog, version_pattern): _vcs_init("hg", files=["README.md", "setup.cfg"]) - result = runner.invoke(cli, ['bump', "-vv", "-n", "--dry"]) + result = runner.invoke(main.cli, ['bump', "-vv", "-n", "--dry"]) assert result.exit_code == 1 assert any("version did not change" in r.message for r in caplog.records) assert any("--major/--minor/--patch required" in r.message for r in caplog.records) - result = runner.invoke(cli, ['bump', "-vv", "-n", "--dry", "--patch"]) + result = runner.invoke(main.cli, ['bump', "-vv", "-n", "--dry", "--patch"]) assert result.exit_code == 0 @@ -589,7 +586,7 @@ def test_v1_bump_semver_diff(runner, caplog, version_pattern): cases = [("--major", "1.0.0"), ("--minor", "0.2.0"), ("--patch", "0.1.1")] for flag, expected in cases: - result = runner.invoke(cli, ['bump', "-vv", "-n", "--dry", flag]) + result = runner.invoke(main.cli, ['bump', "-vv", "-n", "--dry", flag]) assert result.exit_code == 0 assert len(caplog.records) == 0 @@ -603,7 +600,7 @@ def test_v1_bump_semver_diff(runner, caplog, version_pattern): @pytest.mark.parametrize("version_pattern", DEFAULT_VERSION_PATTERNS) def test_get_diff(runner, version_pattern): _add_project_files("README.md", "setup.cfg") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 _update_config_val("setup.cfg", version_pattern=version_pattern) @@ -611,11 +608,7 @@ def test_get_diff(runner, version_pattern): _, cfg = config.init() new_version = "v202010.1003-beta" - if cfg.is_new_pattern: - diff_str = v2cli.get_diff(cfg, new_version) - else: - diff_str = v1cli.get_diff(cfg, new_version) - + diff_str = main.get_diff(cfg, new_version) diff_lines = set(diff_str.splitlines()) assert "- Hello World v201701.1002-alpha !" in diff_lines @@ -674,14 +667,14 @@ WEEKNUM_TEST_CASES = [ @pytest.mark.parametrize("date, pattern, expected", WEEKNUM_TEST_CASES) def test_weeknum(date, pattern, expected, runner): cmd = shlex.split(f"test -vv --date {date} 2020.40 {pattern}") - result = runner.invoke(cli, cmd) + result = runner.invoke(main.cli, cmd) assert result.exit_code == 0 assert "New Version: " + expected in result.output def test_hg_commit_message(runner, caplog): _add_project_files("README.md", "setup.cfg") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 commit_message = """ @@ -693,7 +686,7 @@ def test_hg_commit_message(runner, caplog): _vcs_init("hg", ["README.md", "setup.cfg"]) assert len(caplog.records) > 0 - result = runner.invoke(cli, ['bump', "-vv", "--pin-date", "--release", "beta"]) + result = runner.invoke(main.cli, ['bump', "-vv", "--pin-date", "--release", "beta"]) assert result.exit_code == 0 tags = shell("hg", "tags").decode("utf-8") @@ -708,7 +701,7 @@ def test_hg_commit_message(runner, caplog): def test_git_commit_message(runner, caplog): _add_project_files("README.md", "setup.cfg") - result = runner.invoke(cli, ['init', "-vv"]) + result = runner.invoke(main.cli, ['init', "-vv"]) assert result.exit_code == 0 commit_message = """ @@ -720,7 +713,7 @@ def test_git_commit_message(runner, caplog): _vcs_init("git", ["README.md", "setup.cfg"]) assert len(caplog.records) > 0 - result = runner.invoke(cli, ['bump', "-vv", "--pin-date", "--release", "beta"]) + result = runner.invoke(main.cli, ['bump', "-vv", "--pin-date", "--release", "beta"]) assert result.exit_code == 0 tags = shell("git", "tag", "--list").decode("utf-8") @@ -739,13 +732,13 @@ def test_grep(runner): search_re = r"^\s+2:\s+Hello World v201701\.1002-alpha !" cmd1 = r'grep "vYYYY0M.BUILD[-RELEASE]" README.md' - result1 = runner.invoke(cli, shlex.split(cmd1)) + result1 = runner.invoke(main.cli, shlex.split(cmd1)) assert result1.exit_code == 0 assert "README.md" in result1.output assert re.search(search_re, result1.output, flags=re.MULTILINE) cmd2 = r'grep --version-pattern "vYYYY0M.BUILD[-RELEASE]" "{version}" README.md' - result2 = runner.invoke(cli, shlex.split(cmd2)) + result2 = runner.invoke(main.cli, shlex.split(cmd2)) assert result2.exit_code == 0 assert "README.md" in result2.output assert re.search(search_re, result2.output, flags=re.MULTILINE) @@ -755,7 +748,7 @@ def test_grep(runner): search_re = r"^\s+3:\s+\[aka\. 201701\.1002a0 \!\]" cmd3 = r'grep "\[aka. YYYY0M.BLD[PYTAGNUM] \!\]" README.md' - result3 = runner.invoke(cli, shlex.split(cmd3)) + result3 = runner.invoke(main.cli, shlex.split(cmd3)) assert result3.exit_code == 0 assert "README.md" in result3.output assert re.search(search_re, result3.output, flags=re.MULTILINE) @@ -763,7 +756,7 @@ def test_grep(runner): cmd4 = ( r'grep --version-pattern "vYYYY0M.BUILD[-RELEASE]" "\[aka. {pep440_version} \!\]" README.md' ) - result4 = runner.invoke(cli, shlex.split(cmd4)) + result4 = runner.invoke(main.cli, shlex.split(cmd4)) assert result4.exit_code == 0 assert "README.md" in result4.output assert re.search(search_re, result4.output, flags=re.MULTILINE) @@ -791,7 +784,7 @@ def test_multimatch_file_patterns(runner): with pl.Path("setup.cfg").open(mode="w", encoding="utf-8") as fobj: fobj.write(SETUP_CFG_MULTIMATCH_FILE_PATTERNS_FIXTURE) - result = runner.invoke(cli, ['bump', '--release', 'beta']) + result = runner.invoke(main.cli, ['bump', '--release', 'beta']) assert result.exit_code == 0 with pl.Path("README.md").open(mode="r", encoding="utf-8") as fobj: @@ -831,7 +824,7 @@ ROLLOVER_TEST_CASES = [ @pytest.mark.parametrize("version_pattern, old_version, expected, kwargs", ROLLOVER_TEST_CASES) def test_rollover(version_pattern, old_version, expected, kwargs): - new_version = incr_dispatch(old_version, raw_pattern=version_pattern, **kwargs) + new_version = main.incr_dispatch(old_version, raw_pattern=version_pattern, **kwargs) if new_version is None: assert expected is None else: