bumpver/test/test_rewrite.py
2019-02-21 17:06:47 +01:00

102 lines
2.8 KiB
Python

import copy
from pycalver import config
from pycalver import rewrite
from . import util
REWRITE_FIXTURE = """
# SPDX-License-Identifier: MIT
__version__ = "v201809.0002-beta"
"""
def test_rewrite_lines():
old_lines = REWRITE_FIXTURE.splitlines()
patterns = ['__version__ = "{pycalver}"']
new_lines = rewrite.rewrite_lines(patterns, "v201911.0003", old_lines)
assert len(new_lines) == len(old_lines)
assert "v201911.0003" not in "\n".join(old_lines)
assert "v201911.0003" in "\n".join(new_lines)
def test_rewrite_final():
# Patterns written with {release_tag} placeholder preserve
# the release tag even if the new version is -final
old_lines = REWRITE_FIXTURE.splitlines()
patterns = ['__version__ = "v{year}{month}.{build_no}-{release_tag}"']
new_lines = rewrite.rewrite_lines(patterns, "v201911.0003", old_lines)
assert len(new_lines) == len(old_lines)
assert "v201911.0003" not in "\n".join(old_lines)
assert "None" not in "\n".join(new_lines)
assert "v201911.0003-final" in "\n".join(new_lines)
def test_iter_file_paths():
with util.Project(project="a") as project:
ctx = config.init_project_ctx(project.dir)
cfg = config.parse(ctx)
assert cfg
file_paths = {
str(file_path) for file_path, patterns in rewrite._iter_file_paths(cfg.file_patterns)
}
assert file_paths == {
"pycalver.toml",
"README.md",
}
def test_iter_file_globs():
with util.Project(project="b") as project:
ctx = config.init_project_ctx(project.dir)
cfg = config.parse(ctx)
assert cfg
file_paths = {
str(file_path) for file_path, patterns in rewrite._iter_file_paths(cfg.file_patterns)
}
assert file_paths == {
"setup.cfg",
"setup.py",
"README.rst",
"src/module_v1/__init__.py",
"src/module_v2/__init__.py",
}
def test_error_bad_path():
with util.Project(project="b") as project:
ctx = config.init_project_ctx(project.dir)
cfg = config.parse(ctx)
assert cfg
(project.dir / "setup.py").unlink()
try:
list(rewrite._iter_file_paths(cfg.file_patterns))
assert False, "expected ValueError"
except ValueError as ex:
assert "setup.py" in str(ex)
def test_error_bad_pattern():
with util.Project(project="b") as project:
ctx = config.init_project_ctx(project.dir)
cfg = config.parse(ctx)
assert cfg
patterns = copy.deepcopy(cfg.file_patterns)
print(patterns)
patterns["setup.py"] = patterns["setup.py"][0] + "invalid"
try:
list(rewrite.diff("v201809.1234", patterns))
assert False, "expected ValueError"
except ValueError as ex:
assert "setup.py" in str(ex)