Add dom_short, doy_short and regression tests

This commit is contained in:
Manuel Barkhau 2019-07-25 12:17:52 +02:00
parent 8833bb8b2b
commit 052d01445c
4 changed files with 141 additions and 83 deletions

View file

@ -1,6 +1,8 @@
import random
import datetime as dt
import pytest
from pycalver import version
from pycalver import patterns
@ -50,25 +52,25 @@ def test_bump_random(monkeypatch):
def test_parse_version_info():
version_str = "v201712.0001-alpha"
version_nfo = version.parse_version_info(version_str)
version_str = "v201712.0001-alpha"
version_info = version.parse_version_info(version_str)
# assert version_nfo.pep440_version == "201712.1a0"
# assert version_nfo.version == "v201712.0001-alpha"
assert version_nfo.year == 2017
assert version_nfo.month == 12
assert version_nfo.bid == "0001"
assert version_nfo.tag == "alpha"
# assert version_info.pep440_version == "201712.1a0"
# assert version_info.version == "v201712.0001-alpha"
assert version_info.year == 2017
assert version_info.month == 12
assert version_info.bid == "0001"
assert version_info.tag == "alpha"
version_str = "v201712.0001"
version_nfo = version.parse_version_info(version_str)
version_str = "v201712.0001"
version_info = version.parse_version_info(version_str)
# assert version_nfo.pep440_version == "201712.1"
# assert version_nfo.version == "v201712.0001"
assert version_nfo.year == 2017
assert version_nfo.month == 12
assert version_nfo.bid == "0001"
assert version_nfo.tag == "final"
# assert version_info.pep440_version == "201712.1"
# assert version_info.version == "v201712.0001"
assert version_info.year == 2017
assert version_info.month == 12
assert version_info.bid == "0001"
assert version_info.tag == "final"
def test_readme_pycalver1():
@ -108,7 +110,7 @@ def test_parse_error_empty():
version.parse_version_info("")
assert False
except version.PatternError as err:
pass
assert "Invalid version string" in str(err)
def test_parse_error_noprefix():
@ -116,7 +118,7 @@ def test_parse_error_noprefix():
version.parse_version_info("201809.0002")
assert False
except version.PatternError as err:
pass
assert "Invalid version string" in str(err)
def test_parse_error_nopadding():
@ -124,7 +126,7 @@ def test_parse_error_nopadding():
version.parse_version_info("v201809.2b0")
assert False
except version.PatternError as err:
pass
assert "Invalid version string" in str(err)
def test_part_field_mapping():
@ -141,3 +143,40 @@ def test_part_field_mapping():
b_fields = set(version.VersionInfo._fields)
assert a_fields == b_fields
def vnfo(**field_values):
return version._parse_field_values(field_values)
PARSE_VERSION_TEST_CASES = [
["{year}.{month}.{dom}" , "2017.06.07", vnfo(year="2017", month="06", dom="07")],
["{year}.{month}.{dom_short}" , "2017.06.7" , vnfo(year="2017", month="06", dom="7" )],
["{year}.{month}.{dom_short}" , "2017.06.7" , vnfo(year="2017", month="06", dom="7" )],
["{year}.{month_short}.{dom_short}", "2017.6.7" , vnfo(year="2017", month="6" , dom="7" )],
["{year}.{month}.{dom}" , "2017.6.07" , None],
["{year}.{month}.{dom}" , "2017.06.7" , None],
["{year}.{month_short}.{dom}" , "2017.06.7" , None],
["{year}.{month}.{dom_short}" , "2017.6.07" , None],
["{year}.{month_short}.{MINOR}" , "2017.6.7" , vnfo(year="2017", month="6" , minor="7" )],
["{year}.{month}.{MINOR}" , "2017.06.7" , vnfo(year="2017", month="06", minor="7" )],
["{year}.{month}.{MINOR}" , "2017.06.07", vnfo(year="2017", month="06", minor="07")],
["{year}.{month}.{MINOR}" , "2017.6.7" , None],
]
@pytest.mark.parametrize("pattern_str, line, expected_vinfo", PARSE_VERSION_TEST_CASES)
def test_parse_versions(pattern_str, line, expected_vinfo):
pattern_re = patterns.compile_pattern(pattern_str)
version_match = pattern_re.search(line)
if expected_vinfo is None:
assert version_match is None
return
assert version_match is not None
version_str = version_match.group(0)
version_info = version.parse_version_info(version_str, pattern_str)
assert version_info == expected_vinfo