From 768b34ffb87a1bae9750b96c8d1cde34a64b7a77 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Mon, 5 Oct 2020 18:20:16 +0000 Subject: [PATCH] add regression test for #12 --- src/pycalver/__main__.py | 21 ++++++++++++++------- test/test_cli.py | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/pycalver/__main__.py b/src/pycalver/__main__.py index ea399ee..58fb6dd 100755 --- a/src/pycalver/__main__.py +++ b/src/pycalver/__main__.py @@ -499,7 +499,7 @@ def init(verbose: int = 0, dry: bool = False) -> None: config.write_content(ctx) -def _update_cfg_from_vcs(cfg: config.Config, fetch: bool) -> config.Config: +def get_latest_vcs_version_tag(cfg: config.Config, fetch: bool) -> typ.Optional[str]: all_tags = vcs.get_tags(fetch=fetch) if cfg.is_new_pattern: @@ -507,17 +507,24 @@ def _update_cfg_from_vcs(cfg: config.Config, fetch: bool) -> config.Config: else: version_tags = [tag for tag in all_tags if v1version.is_valid(tag, cfg.version_pattern)] - if not version_tags: + if version_tags: + 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)") + return version_tags[0] + else: + return None + + +def _update_cfg_from_vcs(cfg: config.Config, fetch: bool) -> config.Config: + latest_version_tag = get_latest_vcs_version_tag(cfg, fetch) + if latest_version_tag is None: 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: + # current_version already newer/up-to-date return cfg else: logger.info(f"Working dir version : {cfg.current_version}") diff --git a/test/test_cli.py b/test/test_cli.py index ca07acd..49f856a 100644 --- a/test/test_cli.py +++ b/test/test_cli.py @@ -829,3 +829,28 @@ def test_rollover(version_pattern, old_version, expected, kwargs): assert expected is None else: assert new_version == expected + + +def test_get_latest_vcs_version_tag(runner): + result = runner.invoke(main.cli, ['init', "-vv"]) + assert result.exit_code == 0 + + _update_config_val("pycalver.toml", push="false") + _update_config_val("pycalver.toml", current_version='"0.1.8"') + _update_config_val("pycalver.toml", version_pattern='"MAJOR.MINOR.PATCH"') + + _vcs_init("git", files=["pycalver.toml"]) + + result = runner.invoke(main.cli, ['bump', "--patch"]) + assert result.exit_code == 0 + + _, cfg = config.init() + latest_version = main.get_latest_vcs_version_tag(cfg, fetch=False) + assert latest_version == "0.1.9" + + result = runner.invoke(main.cli, ['bump', "--patch"]) + assert result.exit_code == 0 + + _, cfg = config.init() + latest_version = main.get_latest_vcs_version_tag(cfg, fetch=False) + assert latest_version == "0.1.10"