wip: add v2 module placeholders

This commit is contained in:
Manuel Barkhau 2020-09-06 20:20:36 +00:00
parent 7962a7cb9f
commit 669e8944e9
27 changed files with 1361 additions and 393 deletions

View file

@ -0,0 +1,6 @@
[pycalver]
current_version = "v2017q1.54321"
version_pattern = "vYYYYqQ.BUILD"
commit = true
tag = true
push = true

View file

@ -2,11 +2,10 @@
# pylint:disable=protected-access ; allowed for test code
import io
from test import util
from pycalver import config
from . import util
PYCALVER_TOML_FIXTURE_1 = """
[pycalver]
current_version = "v201808.0123-alpha"

View file

@ -1,67 +0,0 @@
# pylint:disable=protected-access ; allowed for test code
import random
from pycalver import lex_id
def test_next_id_basic():
assert lex_id.next_id("01") == "02"
assert lex_id.next_id("09") == "110"
def test_next_id_overflow():
try:
prev_id = "9999"
next_id = lex_id.next_id(prev_id)
assert False, (prev_id, "->", next_id)
except OverflowError:
pass
def test_next_id_random():
for _ in range(1000):
prev_id = str(random.randint(1, 100 * 1000))
try:
next_id = lex_id.next_id(prev_id)
assert prev_id < next_id
except OverflowError:
assert len(prev_id) == prev_id.count("9")
def test_ord_val():
assert lex_id.ord_val("1" ) == 1
assert lex_id.ord_val("01" ) == 1
assert lex_id.ord_val("02" ) == 2
assert lex_id.ord_val("09" ) == 9
assert lex_id.ord_val("110") == 10
def test_main(capsys):
lex_id._main()
captured = capsys.readouterr()
assert len(captured.err) == 0
lines = iter(captured.out.splitlines())
header = next(lines)
assert "lexical" in header
assert "numerical" in header
ids = []
ord_vals = []
for line in lines:
if "..." in line:
continue
_id, _ord_val = line.split()
assert _id.endswith(_ord_val)
assert int(_ord_val) == int(_ord_val, 10)
ids.append(_id.strip())
ord_vals.append(int(_ord_val.strip()))
assert len(ids) > 0
assert sorted(ids) == ids
assert sorted(ord_vals) == ord_vals

View file

@ -2,14 +2,17 @@ import re
import pytest
from pycalver import patterns
import pycalver.patterns as v1patterns
import pycalver2.patterns as v2patterns
# TODO (mb 2020-09-06): test for v2patterns
def _part_re_by_name(name):
return re.compile(patterns.PART_PATTERNS[name])
return re.compile(v1patterns.PART_PATTERNS[name])
@pytest.mark.parametrize("part_name", patterns.PART_PATTERNS.keys())
@pytest.mark.parametrize("part_name", v1patterns.PART_PATTERNS.keys())
def test_part_compilation(part_name):
assert _part_re_by_name(part_name)
@ -64,7 +67,7 @@ PATTERN_CASES = [
@pytest.mark.parametrize("pattern_str, line, expected", PATTERN_CASES)
def test_patterns(pattern_str, line, expected):
pattern_re = patterns.compile_pattern(pattern_str)
pattern_re = v1patterns.compile_pattern(pattern_str)
result = pattern_re.search(line)
if result is None:
assert expected is None, (pattern_str, line)
@ -82,7 +85,7 @@ CLI_MAIN_FIXTURE = """
def test_pattern_escapes():
pattern = 'click.version_option(version="{pycalver}")'
pattern_re = patterns.compile_pattern(pattern)
pattern_re = v1patterns.compile_pattern(pattern)
match = pattern_re.search(CLI_MAIN_FIXTURE)
expected = 'click.version_option(version="v201812.0123-beta")'
assert match.group(0) == expected
@ -95,7 +98,7 @@ package_metadata = {"name": "mypackage", "version": "v201812.0123-beta"}
def test_curly_escapes():
pattern = 'package_metadata = {"name": "mypackage", "version": "{pycalver}"}'
pattern_re = patterns.compile_pattern(pattern)
pattern_re = v1patterns.compile_pattern(pattern)
match = pattern_re.search(CURLY_BRACE_FIXTURE)
expected = 'package_metadata = {"name": "mypackage", "version": "v201812.0123-beta"}'
assert match.group(0) == expected

View file

@ -1,12 +1,13 @@
# pylint:disable=protected-access ; allowed for test code
import copy
from test import util
from pycalver import config
from pycalver import rewrite
from pycalver import version
from . import util
from pycalver import rewrite as v1rewrite
from pycalver import version as v1version
from pycalver2 import rewrite as v2rewrite
from pycalver2 import version as v2version
REWRITE_FIXTURE = """
# SPDX-License-Identifier: MIT
@ -17,8 +18,8 @@ __version__ = "v201809.0002-beta"
def test_rewrite_lines():
old_lines = REWRITE_FIXTURE.splitlines()
patterns = ['__version__ = "{pycalver}"']
new_vinfo = version.parse_version_info("v201911.0003")
new_lines = rewrite.rewrite_lines(patterns, new_vinfo, old_lines)
new_vinfo = v1version.parse_version_info("v201911.0003")
new_lines = v1rewrite.rewrite_lines(patterns, new_vinfo, old_lines)
assert len(new_lines) == len(old_lines)
assert "v201911.0003" not in "\n".join(old_lines)
@ -31,8 +32,8 @@ def test_rewrite_final():
old_lines = REWRITE_FIXTURE.splitlines()
patterns = ['__version__ = "v{year}{month}.{build_no}-{release_tag}"']
new_vinfo = version.parse_version_info("v201911.0003")
new_lines = rewrite.rewrite_lines(patterns, new_vinfo, old_lines)
new_vinfo = v1version.parse_version_info("v201911.0003")
new_lines = v1rewrite.rewrite_lines(patterns, new_vinfo, old_lines)
assert len(new_lines) == len(old_lines)
assert "v201911.0003" not in "\n".join(old_lines)
@ -46,9 +47,8 @@ def test_iter_file_paths():
cfg = config.parse(ctx)
assert cfg
file_paths = {
str(file_path) for file_path, patterns in rewrite._iter_file_paths(cfg.file_patterns)
}
_paths_and_patterns = v1rewrite.iter_file_paths(cfg.file_patterns)
file_paths = {str(file_path) for file_path, patterns in _paths_and_patterns}
assert file_paths == {"pycalver.toml", "README.md"}
@ -59,9 +59,8 @@ def test_iter_file_globs():
cfg = config.parse(ctx)
assert cfg
file_paths = {
str(file_path) for file_path, patterns in rewrite._iter_file_paths(cfg.file_patterns)
}
_paths_and_patterns = v1rewrite.iter_file_paths(cfg.file_patterns)
file_paths = {str(file_path) for file_path, patterns in _paths_and_patterns}
assert file_paths == {
"setup.cfg",
@ -80,7 +79,7 @@ def test_error_bad_path():
(project.dir / "setup.py").unlink()
try:
list(rewrite._iter_file_paths(cfg.file_patterns))
list(v1rewrite.iter_file_paths(cfg.file_patterns))
assert False, "expected IOError"
except IOError as ex:
assert "setup.py" in str(ex)
@ -96,10 +95,10 @@ def test_error_bad_pattern():
patterns["setup.py"] = patterns["setup.py"][0] + "invalid"
try:
new_vinfo = version.parse_version_info("v201809.1234")
list(rewrite.diff(new_vinfo, patterns))
assert False, "expected rewrite.NoPatternMatch"
except rewrite.NoPatternMatch as ex:
new_vinfo = v1version.parse_version_info("v201809.1234")
list(v1rewrite.diff(new_vinfo, patterns))
assert False, "expected v1rewrite.NoPatternMatch"
except v1rewrite.NoPatternMatch as ex:
assert "setup.py" in str(ex)
@ -109,21 +108,21 @@ __version__ = "2018.0002-beta"
"""
def test_optional_release():
def test_v1_optional_release():
old_lines = OPTIONAL_RELEASE_FIXTURE.splitlines()
pattern = "{year}.{build_no}{release}"
patterns = ['__version__ = "{year}.{build_no}{release}"']
new_vinfo = version.parse_version_info("2019.0003", pattern)
new_lines = rewrite.rewrite_lines(patterns, new_vinfo, old_lines)
new_vinfo = v1version.parse_version_info("2019.0003", pattern)
new_lines = v1rewrite.rewrite_lines(patterns, new_vinfo, old_lines)
assert len(new_lines) == len(old_lines)
assert "2019.0003" not in "\n".join(old_lines)
new_text = "\n".join(new_lines)
assert "2019.0003" in new_text
new_vinfo = version.parse_version_info("2019.0004-beta", pattern)
new_lines = rewrite.rewrite_lines(patterns, new_vinfo, old_lines)
new_vinfo = v1version.parse_version_info("2019.0004-beta", pattern)
new_lines = v1rewrite.rewrite_lines(patterns, new_vinfo, old_lines)
# make sure optional release tag is added back on
assert len(new_lines) == len(old_lines)