Skip to content

Commit

Permalink
Update ctl semver2 to not git tag (#80)
Browse files Browse the repository at this point in the history
* add --no-git option

* fix unit tests

* fix linting
  • Loading branch information
gablooge authored Nov 10, 2024
1 parent 67eb0ea commit b2b3308
Show file tree
Hide file tree
Showing 7 changed files with 185 additions and 40 deletions.
60 changes: 36 additions & 24 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ confu = ">=1.4"
grainy = ">=1.4"
munge = ">=1"
natsort = ">=8"
pluginmgr = ">=1"
pluginmgr = ">=1.2.1"
semver = "<=3"

GitPython = ">=3.1.36"
Expand All @@ -49,7 +49,7 @@ pydantic = ">=2.3.0"
coverage = ">=5"
pytest = ">=6"
pytest-cov = ">=2.10.1"
pytest-filedata = "^0.4.0"
pytest-filedata = "^1.0.0"
tox = ">=3"
tox-gh-actions = ">=2"

Expand Down
11 changes: 10 additions & 1 deletion src/ctl/plugins/semver2.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ def add_arguments(cls, parser, plugin_config, confu_cli_args):
release_parser = parsers.get("release_parser")
group = parsers.get("group")

shared_parser.add_argument(
"--no-git",
action="store_true",
help="Skip git tagging operations",
default=False,
)

# operation `tag`
op_tag_parser = parsers.get("op_tag_parser")
op_tag_parser.add_argument(
Expand Down Expand Up @@ -116,7 +123,9 @@ def tag(self, version, repo, prerelease=None, **kwargs):
self.update_version_files(repo_plugin, version_tag, files)

repo_plugin.commit(files=files, message=f"Version {version_tag}", push=True)
repo_plugin.tag(version_tag, message=version_tag, push=True)
nogit = kwargs.pop("nogit", False)
if not nogit:
repo_plugin.tag(version_tag, message=version_tag, push=True)

@expose("ctl.{plugin_name}.bump")
def bump(self, version, repo, **kwargs):
Expand Down
35 changes: 34 additions & 1 deletion tests/test_plugin_semver2.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,23 @@ def test_tag(tmpdir, ctlr):

plugin.tag(version="1.0.2", repo="dummy_repo")
assert dummy_repo.version == "1.0.2"
assert dummy_repo.has_tag("1.0.2")

plugin.tag(version="1.0.3", repo="dummy_repo", nogit=True)
assert dummy_repo.version == "1.0.3"
assert not dummy_repo.has_tag("1.0.3")


def test_tag_prerelease(tmpdir, ctlr):
plugin, dummy_repo = instantiate(tmpdir, ctlr)
plugin.tag(version="1.0.0", repo="dummy_repo", prerelease="beta")
assert os.path.exists(dummy_repo.version_file)
assert dummy_repo.version == "1.0.0-beta.1"
assert dummy_repo.has_tag("1.0.0-beta.1")

plugin.tag(version="1.0.0", repo="dummy_repo", prerelease="rc", nogit=True)
assert dummy_repo.version == "1.0.0-rc.1"
assert not dummy_repo.has_tag("1.0.0-rc.1")


def test_tag_pyproject(tmpdir, ctlr):
Expand All @@ -50,7 +60,8 @@ def test_tag_pyproject(tmpdir, ctlr):

plugin.tag(version="2.0.0", repo="dummy_repo", prerelease="rc")

pyproject = tomlkit.load(pyproject_path)
with open(pyproject_path, "r") as f:
pyproject = tomlkit.load(f)
assert pyproject["tool"]["poetry"]["version"] == "2.0.0-rc.1"


Expand All @@ -66,17 +77,27 @@ def test_bump(tmpdir, ctlr):

plugin.bump(version="major", repo="dummy_repo")
assert dummy_repo.version == "2.0.0"
assert dummy_repo.has_tag("2.0.0")

with pytest.raises(ValueError):
plugin.bump(version="invalid", repo="dummy_repo")

plugin.bump(version="patch", repo="dummy_repo", nogit=True)
assert dummy_repo.version == "2.0.1"
assert not dummy_repo.has_tag("2.0.1")


def test_bump_w_prerelease_flag(tmpdir, ctlr):
plugin, dummy_repo = instantiate(tmpdir, ctlr)
plugin.tag(version="1.0.0", repo="dummy_repo")

plugin.bump(version="patch", repo="dummy_repo", prerelease="rc")
assert dummy_repo.version == "1.0.1-rc.1"
assert dummy_repo.has_tag("1.0.1-rc.1")

plugin.bump(version="patch", repo="dummy_repo", prerelease="beta", nogit=True)
assert dummy_repo.version == "1.0.2-beta.1"
assert not dummy_repo.has_tag("1.0.2-beta.1")


def test_bump_prerelease_version(tmpdir, ctlr):
Expand All @@ -88,6 +109,11 @@ def test_bump_prerelease_version(tmpdir, ctlr):
assert dummy_repo.version == "1.0.0-rc.2"
plugin.bump(version="prerelease", repo="dummy_repo")
assert dummy_repo.version == "1.0.0-rc.3"
assert dummy_repo.has_tag("1.0.0-rc.3")

plugin.bump(version="prerelease", repo="dummy_repo", nogit=True)
assert dummy_repo.version == "1.0.0-rc.4"
assert not dummy_repo.has_tag("1.0.0-rc.4")


def test_release(tmpdir, ctlr):
Expand All @@ -96,6 +122,13 @@ def test_release(tmpdir, ctlr):
assert dummy_repo.version == "1.0.0-rc.1"
plugin.release(repo="dummy_repo")
assert dummy_repo.version == "1.0.0"
assert dummy_repo.has_tag("1.0.0")

plugin.tag(version="1.1.0", repo="dummy_repo", prerelease="rc")
assert dummy_repo.version == "1.1.0-rc.1"
plugin.release(repo="dummy_repo", nogit=True)
assert dummy_repo.version == "1.1.0"
assert not dummy_repo.has_tag("1.1.0")


def test_execute(tmpdir, ctlr):
Expand Down
3 changes: 2 additions & 1 deletion tests/test_plugin_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ def test_tag_pyproject(tmpdir, ctlr):

plugin.tag(version="2.0.0", repo="dummy_repo")

pyproject = tomlkit.load(pyproject_path)
with open(pyproject_path, "r") as f:
pyproject = tomlkit.load(f)
assert pyproject["tool"]["poetry"]["version"] == "2.0.0"


Expand Down
Loading

0 comments on commit b2b3308

Please sign in to comment.