summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonny Pfannschmidt <ronny.pfannschmidt@redhat.com>2020-11-29 21:37:55 +0100
committerRonny Pfannschmidt <ronny.pfannschmidt@redhat.com>2020-11-29 21:37:55 +0100
commit49e368dcda6997be3bd104c6a45281219f58ff5f (patch)
tree37403ae97f1c036c887bf11be38ce69089046903
parentfb8404458bd670f738ac57ad63daabce14bf879f (diff)
downloadsetuptools-scm-49e368dcda6997be3bd104c6a45281219f58ff5f.tar.gz
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",
[