summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2020-11-29 21:52:33 +0100
committerGitHub <noreply@github.com>2020-11-29 21:52:33 +0100
commit57c3590fa632f10c7855edc64fbf4c9c029c0d08 (patch)
treedee52754ab789883782ec435f2f54bbf755a5fae
parentf86c74abbbb6383b56eca13b7131f0b844862540 (diff)
parent49e368dcda6997be3bd104c6a45281219f58ff5f (diff)
downloadsetuptools-scm-57c3590fa632f10c7855edc64fbf4c9c029c0d08.tar.gz
Merge pull request #495 from RonnyPfannschmidt/fix-479-better-error-on-unparsable-tag
fix #479: better error on unparsable simplified semver version
-rw-r--r--CHANGELOG.rst2
-rw-r--r--src/setuptools_scm/version.py7
-rw-r--r--testing/test_version.py9
3 files changed, 17 insertions, 1 deletions
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index c5c57dd..0d7a1c3 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,8 @@
v4.2.0
======
+
+* fix #479: raise indicative error when tags carry non-parsable information
* Add `no-guess-dev` which does no next version guessing, just adds `.post1.devN` in
case there are new commits after the tag
* add python3.9
diff --git a/src/setuptools_scm/version.py b/src/setuptools_scm/version.py
index ac74149..c58be7e 100644
--- a/src/setuptools_scm/version.py
+++ b/src/setuptools_scm/version.py
@@ -247,7 +247,12 @@ def guess_next_dev_version(version):
def guess_next_simple_semver(version, retain, increment=True):
- parts = [int(i) for i in str(version).split(".")[:retain]]
+ try:
+ parts = [int(i) for i in str(version).split(".")[:retain]]
+ except ValueError:
+ raise ValueError(
+ "{version} can't be parsed as numeric version".format(version=version)
+ )
while len(parts) < retain:
parts.append(0)
if increment:
diff --git a/testing/test_version.py b/testing/test_version.py
index aaaf952..38c98bf 100644
--- a/testing/test_version.py
+++ b/testing/test_version.py
@@ -49,6 +49,15 @@ def test_next_semver(version, expected_next):
assert computed == expected_next
+def test_next_semver_bad_tag():
+
+ version = meta("1.0.0-foo", config=c)
+ with pytest.raises(
+ ValueError, match="1.0.0-foo can't be parsed as numeric version"
+ ):
+ simplified_semver_version(version)
+
+
@pytest.mark.parametrize(
"version, expected_next",
[