mirror of
https://github.com/TECHNOFAB11/bumpver.git
synced 2025-12-12 06:20:08 +01:00
wip: add v2 module placeholders
This commit is contained in:
parent
7962a7cb9f
commit
669e8944e9
27 changed files with 1361 additions and 393 deletions
6
test/fixtures/project_d/pyproject.toml
vendored
Normal file
6
test/fixtures/project_d/pyproject.toml
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[pycalver]
|
||||
current_version = "v2017q1.54321"
|
||||
version_pattern = "vYYYYqQ.BUILD"
|
||||
commit = true
|
||||
tag = true
|
||||
push = true
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue