Skip to content

Commit 6ffd884

Browse files
committed
append -0.dev to non-prerelease baseVersion
allows clearer behavior, simpler config without dictating everyone add the same 0.dev suffix by default
1 parent 4b85272 commit 6ffd884

File tree

3 files changed

+31
-23
lines changed

3 files changed

+31
-23
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,11 @@ charts:
178178
# This gives you more control over development version tags
179179
# and lets you ensure prerelease tags are always sorted in the right order.
180180
# Only useful when publishing development releases.
181-
baseVersion: 3.2.1-0.dev
181+
# if this is not a prerelease version (no -suffix),
182+
# the suffix `-0.dev` will be appended.
183+
baseVersion: 3.2.1
184+
# which is equivalent to
185+
# baseVersion: 3.2.1-0.dev
182186

183187
# The git repo whose gh-pages contains the charts. This can be a local
184188
# path such as "." as well but if matching <organization>/<repo> will be

chartpress.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -976,17 +976,17 @@ def _check_base_version(base_version):
976976
2. sort after the latest tag on the branch
977977
"""
978978

979+
if "-" not in base_version:
980+
# config version is a stable release,
981+
# append default '-0.dev' so we always produce a prerelease
982+
base_version = f"{base_version}-0.dev"
979983
# check valid value (baseVersion must be semver prerelease)
980984
match = _semver2.fullmatch(base_version)
981985
if not match:
982986
raise ValueError(
983987
f"baseVersion: {base_version} must be a valid semver prerelease (e.g. 1.2.3-0.dev), but doesn't appear to be valid."
984988
)
985989
base_version_groups = match.groupdict()
986-
if not base_version_groups["prerelease"]:
987-
raise ValueError(
988-
f"baseVersion: {base_version} must be a valid semver prerelease (e.g. 1.2.3-0.dev), but is not a prerelease."
989-
)
990990

991991
def _version_number(groups):
992992
"""Return comparable semver"""
@@ -1020,6 +1020,9 @@ def _version_number(groups):
10201020
# tag not semver. ignore? Not really our problem.
10211021
_log(f"Latest tag {tag} does not appear to be a semver version")
10221022

1023+
# return base_version, in case it was modified
1024+
return base_version
1025+
10231026

10241027
class ActionStoreDeprecated(argparse.Action):
10251028
"""Used with argparse as a deprecation action."""
@@ -1183,7 +1186,7 @@ def main(argv=None):
11831186
# (e.g. forgetting to update after release)
11841187
base_version = chart.get("baseVersion", None)
11851188
if base_version:
1186-
_check_base_version(base_version)
1189+
base_version = _check_base_version(base_version)
11871190

11881191
if not args.list_images:
11891192
# update Chart.yaml with a version

tests/test_helpers.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -162,35 +162,36 @@ def test__get_image_extra_build_command_options(git_repo):
162162

163163

164164
@pytest.mark.parametrize(
165-
"base_version, tag, n_commits, status",
165+
"base_version, tag, n_commits, result",
166166
[
167167
# OK, normal state
168-
("1.2.4-0.dev", "1.2.3", 10, "ok"),
168+
("1.2.4-0.dev", "1.2.3", 10, "1.2.4-0.dev"),
169169
# don't compare prereleases on the same tag
170-
("1.2.3-0.dev", "1.2.3-alpha.1", 10, "ok"),
170+
("1.2.3-0.dev", "1.2.3-alpha.1", 10, "1.2.3-0.dev"),
171171
# invalid baseVersion (not semver)
172-
("x.y.z", "1.2.3", 10, "valid semver prerelease"),
172+
("x.y.z", "1.2.3", 10, ValueError("valid semver pre")),
173173
# not prerelease baseVersion
174-
("1.2.4", "1.2.3", 10, "valid semver prerelease"),
174+
("1.2.4", "1.2.3", 10, "1.2.4-0.dev"),
175175
# check comparison with tag
176-
("1.2.2-0.dev", "1.2.3-alpha.1", 10, "is not greater"),
177-
("1.2.3-0.dev", "1.2.3", 10, "is not greater"),
178-
("1.2.3-0.dev", "2.0.0", 10, "is not greater"),
179-
("1.2.3-0.dev", "1.2.4-alpha.1", 10, "is not greater"),
176+
("1.2.2-0.dev", "1.2.3-alpha.1", 10, ValueError("is not greater")),
177+
("1.2.3-0.dev", "1.2.3", 10, ValueError("is not greater")),
178+
("1.2.3-0.dev", "2.0.0", 10, ValueError("is not greater")),
179+
("1.2.3-0.dev", "1.2.4-alpha.1", 10, ValueError("is not greater")),
180180
# don't check exactly on a tag
181-
("1.2.3-0.dev", "2.0.0", 0, "ok"),
181+
("1.2.3-0.dev", "2.0.0", 0, "1.2.3-0.dev"),
182182
# ignore invalid semver tags
183-
("1.2.3-0.dev", "x.y.z", 10, "ok"),
183+
("1.2.3-0.dev", "x.y.z", 10, "1.2.3-0.dev"),
184184
],
185185
)
186-
def test_check_base_version(base_version, tag, n_commits, status):
186+
def test_check_base_version(base_version, tag, n_commits, result):
187187
with mock.patch.object(
188188
chartpress, "_get_latest_tag_and_count", lambda: (tag, n_commits)
189189
):
190-
if status == "ok":
191-
chartpress._check_base_version(base_version)
192-
else:
193-
with pytest.raises(ValueError) as exc:
190+
if isinstance(result, Exception):
191+
with pytest.raises(result.__class__) as exc:
194192
chartpress._check_base_version(base_version)
195-
assert status in str(exc)
193+
assert str(result) in str(exc)
196194
assert base_version in str(exc)
195+
else:
196+
used_version = chartpress._check_base_version(base_version)
197+
assert used_version == result

0 commit comments

Comments
 (0)