We also need to be PEP440 compliant when there's no git history

This commit is contained in:
Pedro Algarvio 2021-01-26 19:12:30 +00:00
parent 60eb525c77
commit 9173f08d72
3 changed files with 22 additions and 21 deletions

View file

@ -59,7 +59,7 @@ class SaltStackVersion:
r"(?:\.(?P<bugfix>[\d]{0,2}))?"
r"(?:\.(?P<mbugfix>[\d]{0,2}))?"
r"(?:(?P<pre_type>rc|a|b|alpha|beta|nb)(?P<pre_num>[\d]+))?"
r"(?:(?:.*)(?:\+|-)(?P<noc>(?:[\d]+|n/a))(?:-|\.)" + git_sha_regex + r")?"
r"(?:(?:.*)(?:\+|-)(?P<noc>(?:0na|[\d]+|n/a))(?:-|\.)" + git_sha_regex + r")?"
)
git_sha_regex = r"^" + git_sha_regex
@ -241,7 +241,7 @@ class SaltStackVersion:
if noc is None:
noc = 0
elif isinstance(noc, str) and noc == "n/a":
elif isinstance(noc, str) and noc in ("0na", "n/a"):
noc = -1
elif isinstance(noc, str):
noc = int(noc)
@ -384,7 +384,7 @@ class SaltStackVersion:
if self.noc and self.sha:
noc = self.noc
if noc < 0:
noc = "n/a"
noc = "0na"
version_string += "+{}.{}".format(noc, self.sha)
return version_string
@ -489,7 +489,7 @@ class SaltStackVersion:
parts.append("{}={}".format(self.pre_type, self.pre_num))
noc = self.noc
if noc == -1:
noc = "n/a"
noc = "0na"
if noc and self.sha:
parts.extend(["noc={}".format(noc), "sha={}".format(self.sha)])
return "<{} {}>".format(self.__class__.__name__, " ".join(parts))

View file

@ -52,8 +52,9 @@ def test_wheel(virtualenv, cache_dir):
if re.search(r"^\d.\d*", x)
][0]
whl_ver_cmp = whl_ver.replace("_", "-")
salt_ver_cmp = salt.version.__version__.replace("/", "-").replace("+", "-")
assert whl_ver_cmp == salt_ver_cmp, "{} != {}".format(whl_ver_cmp, salt_ver_cmp)
assert whl_ver_cmp == salt.version.__version__, "{} != {}".format(
whl_ver_cmp, salt.version.__version__
)
# Because bdist_wheel supports pep517, we don't have to pre-install Salt's
# dependencies before installing the wheel package
@ -70,8 +71,8 @@ def test_wheel(virtualenv, cache_dir):
pytest.fail("Salt was not found installed")
# Let's compare the installed version with the version salt reports
assert installed_version == salt_ver_cmp, "{} != {}".format(
installed_version, salt_ver_cmp
assert installed_version == salt.version.__version__, "{} != {}".format(
installed_version, salt.version.__version__
)
# Let's also ensure we have a salt/_version.py from the installed salt wheel
@ -165,8 +166,9 @@ def test_egg(virtualenv, cache_dir):
if re.search(r"^\d.\d*", x)
][0]
egg_ver_cmp = egg_ver.replace("_", "-")
salt_ver_cmp = salt.version.__version__.replace("/", "-").replace("+", "-")
assert egg_ver_cmp == salt_ver_cmp, "{} != {}".format(egg_ver_cmp, salt_ver_cmp)
assert egg_ver_cmp == salt.version.__version__, "{} != {}".format(
egg_ver_cmp, salt.version.__version__
)
# We cannot pip install an egg file, let's go old school
venv.run(venv.venv_python, "-m", "easy_install", str(salt_generated_package))
@ -182,8 +184,8 @@ def test_egg(virtualenv, cache_dir):
pytest.fail("Salt was not found installed")
# Let's compare the installed version with the version salt reports
assert installed_version == salt_ver_cmp, "{} != {}".format(
installed_version, salt_ver_cmp
assert installed_version == salt.version.__version__, "{} != {}".format(
installed_version, salt.version.__version__
)
# Let's also ensure we have a salt/_version.py from the installed salt egg
@ -263,8 +265,7 @@ def test_sdist(virtualenv, cache_dir):
sdist_ver_cmp = salt_generated_package.name.split(".tar.gz")[0].split("salt-")[
-1
]
salt_ver_cmp = salt.version.__version__.replace("/", "-").replace("+", "-")
assert sdist_ver_cmp == salt_ver_cmp, "{} != {}".format(
assert sdist_ver_cmp == salt.version.__version__, "{} != {}".format(
sdist_ver_cmp, salt.version.__version__
)
@ -299,8 +300,8 @@ def test_sdist(virtualenv, cache_dir):
pytest.fail("Salt was not found installed")
# Let's compare the installed version with the version salt reports
assert installed_version == salt_ver_cmp, "{} != {}".format(
installed_version, salt_ver_cmp
assert installed_version == salt.version.__version__, "{} != {}".format(
installed_version, salt.version.__version__
)
@ -351,10 +352,9 @@ def test_setup_install(virtualenv, cache_dir):
else:
pytest.fail("Salt was not found installed")
salt_ver_cmp = salt.version.__version__.replace("/", "-").replace("+", "-")
# Let's compare the installed version with the version salt reports
assert installed_version == salt_ver_cmp, "{} != {}".format(
installed_version, salt_ver_cmp
assert installed_version == salt.version.__version__, "{} != {}".format(
installed_version, salt.version.__version__
)
# Let's also ensure we have a salt/_version.py from the installed salt

View file

@ -58,6 +58,7 @@ def test_version_parsing(version_string, full_info, version):
STRIP_INITIAL_NON_NUMBERS_REGEX.search(version_string)
.group("vs") # Strip leading non numeric chars
# Now, make it Wheel metadata 1.2 compliant post release
.replace("n/a", "0na")
.replace("-", "+", 1)
.replace("-", ".", 1)
)
@ -281,10 +282,10 @@ def test_full_info_all_versions(vstr, full_info):
(3000, None, b"v3000.0rc2-12-g44fe283a77\n", "3000rc2-12-g44fe283a77"),
(3000, None, b"v3000.0rc2-0-g44fe283a77\n", "3000rc2"),
(3000, None, b"v3000", "3000"),
(3000, None, b"1234567", "3000-n/a-1234567"),
(3000, None, b"1234567", "3000-0na-1234567"),
(2019, 2, b"v2019.2.0rc2-12-g44fe283a77\n", "2019.2.0rc2-12-g44fe283a77"),
(2019, 2, b"v2019.2.0", "2019.2.0"),
(2019, 2, b"afc9830198dj", "2019.2.0-n/a-afc9830198dj"),
(2019, 2, b"afc9830198dj", "2019.2.0-0na-afc9830198dj"),
],
)
def test_discover_version(major, minor, tag, expected):