mirror of
https://github.com/TECHNOFAB11/bumpver.git
synced 2025-12-12 14:30:09 +01:00
setup to reduce code duplication
This commit is contained in:
parent
e053af589e
commit
3cbf0e82b1
10 changed files with 271 additions and 267 deletions
|
|
@ -1,3 +1,4 @@
|
|||
import pycalver.patterns as v1patterns
|
||||
from pycalver import parse
|
||||
|
||||
SETUP_PY_FIXTURE = """
|
||||
|
|
@ -11,17 +12,17 @@ setuptools.setup(
|
|||
|
||||
|
||||
def test_default_parse_patterns():
|
||||
lines = SETUP_PY_FIXTURE.splitlines()
|
||||
patterns = ["{pycalver}", "{pep440_pycalver}"]
|
||||
|
||||
matches = list(parse.iter_matches(lines, patterns))
|
||||
lines = SETUP_PY_FIXTURE.splitlines()
|
||||
patterns = ["{pycalver}", "{pep440_pycalver}"]
|
||||
re_patterns = [v1patterns.compile_pattern(p) for p in patterns]
|
||||
matches = list(parse.iter_matches(lines, re_patterns))
|
||||
assert len(matches) == 2
|
||||
|
||||
assert matches[0].lineno == 3
|
||||
assert matches[1].lineno == 6
|
||||
|
||||
assert matches[0].pattern == patterns[0]
|
||||
assert matches[1].pattern == patterns[1]
|
||||
assert matches[0].pattern == re_patterns[0]
|
||||
assert matches[1].pattern == re_patterns[1]
|
||||
|
||||
assert matches[0].match == "v201712.0002-alpha"
|
||||
assert matches[1].match == "201712.2a0"
|
||||
|
|
@ -30,16 +31,16 @@ def test_default_parse_patterns():
|
|||
def test_explicit_parse_patterns():
|
||||
lines = SETUP_PY_FIXTURE.splitlines()
|
||||
|
||||
patterns = ["__version__ = '{pycalver}'", "version='{pep440_pycalver}'"]
|
||||
|
||||
matches = list(parse.iter_matches(lines, patterns))
|
||||
patterns = ["__version__ = '{pycalver}'", "version='{pep440_pycalver}'"]
|
||||
re_patterns = [v1patterns.compile_pattern(p) for p in patterns]
|
||||
matches = list(parse.iter_matches(lines, re_patterns))
|
||||
assert len(matches) == 2
|
||||
|
||||
assert matches[0].lineno == 3
|
||||
assert matches[1].lineno == 6
|
||||
|
||||
assert matches[0].pattern == patterns[0]
|
||||
assert matches[1].pattern == patterns[1]
|
||||
assert matches[0].pattern == re_patterns[0]
|
||||
assert matches[1].pattern == re_patterns[1]
|
||||
|
||||
assert matches[0].match == "__version__ = 'v201712.0002-alpha'"
|
||||
assert matches[1].match == "version='201712.2a0'"
|
||||
|
|
@ -57,16 +58,17 @@ README_RST_FIXTURE = """
|
|||
def test_badge_parse_patterns():
|
||||
lines = README_RST_FIXTURE.splitlines()
|
||||
|
||||
patterns = ["badge/CalVer-{calver}{build}-{release}-blue.svg", ":alt: CalVer {pycalver}"]
|
||||
patterns = ["badge/CalVer-{calver}{build}-{release}-blue.svg", ":alt: CalVer {pycalver}"]
|
||||
re_patterns = [v1patterns.compile_pattern(p) for p in patterns]
|
||||
matches = list(parse.iter_matches(lines, re_patterns))
|
||||
|
||||
matches = list(parse.iter_matches(lines, patterns))
|
||||
assert len(matches) == 2
|
||||
|
||||
assert matches[0].lineno == 3
|
||||
assert matches[1].lineno == 5
|
||||
|
||||
assert matches[0].pattern == patterns[0]
|
||||
assert matches[1].pattern == patterns[1]
|
||||
assert matches[0].pattern == re_patterns[0]
|
||||
assert matches[1].pattern == re_patterns[1]
|
||||
|
||||
assert matches[0].match == "badge/CalVer-v201809.0002--beta-blue.svg"
|
||||
assert matches[1].match == ":alt: CalVer v201809.0002-beta"
|
||||
|
|
|
|||
|
|
@ -67,8 +67,8 @@ PATTERN_CASES = [
|
|||
|
||||
@pytest.mark.parametrize("pattern_str, line, expected", PATTERN_CASES)
|
||||
def test_patterns(pattern_str, line, expected):
|
||||
pattern_re = v1patterns.compile_pattern(pattern_str)
|
||||
result = pattern_re.search(line)
|
||||
pattern = v1patterns.compile_pattern(pattern_str)
|
||||
result = pattern.regexp.search(line)
|
||||
if result is None:
|
||||
assert expected is None, (pattern_str, line)
|
||||
else:
|
||||
|
|
@ -84,10 +84,10 @@ CLI_MAIN_FIXTURE = """
|
|||
|
||||
|
||||
def test_pattern_escapes():
|
||||
pattern = 'click.version_option(version="{pycalver}")'
|
||||
pattern_re = v1patterns.compile_pattern(pattern)
|
||||
match = pattern_re.search(CLI_MAIN_FIXTURE)
|
||||
expected = 'click.version_option(version="v201812.0123-beta")'
|
||||
pattern_str = 'click.version_option(version="{pycalver}")'
|
||||
pattern = v1patterns.compile_pattern(pattern_str)
|
||||
match = pattern.regexp.search(CLI_MAIN_FIXTURE)
|
||||
expected = 'click.version_option(version="v201812.0123-beta")'
|
||||
assert match.group(0) == expected
|
||||
|
||||
|
||||
|
|
@ -97,8 +97,8 @@ package_metadata = {"name": "mypackage", "version": "v201812.0123-beta"}
|
|||
|
||||
|
||||
def test_curly_escapes():
|
||||
pattern = 'package_metadata = {"name": "mypackage", "version": "{pycalver}"}'
|
||||
pattern_re = v1patterns.compile_pattern(pattern)
|
||||
match = pattern_re.search(CURLY_BRACE_FIXTURE)
|
||||
expected = 'package_metadata = {"name": "mypackage", "version": "v201812.0123-beta"}'
|
||||
pattern_str = 'package_metadata = {"name": "mypackage", "version": "{pycalver}"}'
|
||||
pattern = v1patterns.compile_pattern(pattern_str)
|
||||
match = pattern.regexp.search(CURLY_BRACE_FIXTURE)
|
||||
expected = 'package_metadata = {"name": "mypackage", "version": "v201812.0123-beta"}'
|
||||
assert match.group(0) == expected
|
||||
|
|
|
|||
|
|
@ -136,15 +136,18 @@ def test_part_field_mapping():
|
|||
b_names = set(patterns.PART_PATTERNS.keys())
|
||||
c_names = set(patterns.COMPOSITE_PART_PATTERNS.keys())
|
||||
|
||||
extra_names = a_names - b_names
|
||||
assert not any(extra_names)
|
||||
missing_names = b_names - a_names
|
||||
assert missing_names == c_names
|
||||
a_extra_names = a_names - b_names
|
||||
assert not any(a_extra_names), sorted(a_extra_names)
|
||||
b_extra_names = b_names - (a_names | c_names)
|
||||
assert not any(b_extra_names), sorted(b_extra_names)
|
||||
|
||||
a_fields = set(version.PATTERN_PART_FIELDS.values())
|
||||
b_fields = set(version.VersionInfo._fields)
|
||||
|
||||
assert a_fields == b_fields
|
||||
a_extra_fields = a_fields - b_fields
|
||||
b_extra_fields = b_fields - a_fields
|
||||
assert not any(a_extra_fields), sorted(a_extra_fields)
|
||||
assert not any(b_extra_fields), sorted(b_extra_fields)
|
||||
|
||||
|
||||
def vnfo(**field_values):
|
||||
|
|
@ -152,6 +155,8 @@ def vnfo(**field_values):
|
|||
|
||||
|
||||
PARSE_VERSION_TEST_CASES = [
|
||||
# TODO (mb 2020-09-06): add tests for new style patterns
|
||||
# ["YYYY.MM.DD" , "2017.06.07", vnfo(year="2017", month="06", dom="07")],
|
||||
["{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" )],
|
||||
|
|
@ -169,8 +174,8 @@ PARSE_VERSION_TEST_CASES = [
|
|||
|
||||
@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)
|
||||
pattern = patterns.compile_pattern(pattern_str)
|
||||
version_match = pattern.regexp.search(line)
|
||||
|
||||
if expected_vinfo is None:
|
||||
assert version_match is None
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue