WIP: more testing

This commit is contained in:
Manuel Barkhau 2018-09-04 09:56:53 +02:00
parent 5108837f45
commit 0a3638a62f
6 changed files with 94 additions and 7 deletions

View file

@ -32,8 +32,8 @@ class Config(typ.NamedTuple):
MaybeConfig = typ.Optional[Config]
def _parse_buffer(cfg_buffer: io.StringIO) -> MaybeConfig:
cfg_parser = configparser.RawConfigParser("")
def parse_buffer(cfg_buffer: io.StringIO) -> MaybeConfig:
cfg_parser = configparser.RawConfigParser()
cfg_parser.readfp(cfg_buffer)
if "pycalver" not in cfg_parser:
@ -99,7 +99,7 @@ def parse(config_file="setup.cfg") -> MaybeConfig:
cfg_buffer.write(fh.read())
cfg_buffer.seek(0)
return _parse_buffer(cfg_buffer)
return parse_buffer(cfg_buffer)
def default_config_lines() -> typ.List[str]:

View file

@ -17,7 +17,7 @@ VALID_RELESE_VALUES = ("alpha", "beta", "dev", "rc", "post")
# https://regex101.com/r/fnj60p/10
PYCALVER_RE: typ.re.Pattern[str] = re.compile(r"""
PYCALVER_RE: typ.Pattern[str] = re.compile(r"""
\b
(?P<version>
(?P<calver>
@ -75,6 +75,8 @@ class VersionInfo(typ.NamedTuple):
def parse_version_info(version: str) -> VersionInfo:
match = PYCALVER_RE.match(version)
if match is None:
raise ValueError(f"Invalid pycalver: {version}")
pep440_version = str(pkg_resources.parse_version(version))
return VersionInfo(pep440_version=pep440_version, **match.groupdict())

View file

@ -17,7 +17,7 @@ log = logging.getLogger("pycalver.rewrite")
def rewrite(
new_version: str,
file_patterns: typ.Dict[str, str],
file_patterns: typ.Dict[str, typ.List[str]],
dry=False,
verbose=False,
) -> None:

View file

@ -5,6 +5,7 @@
# SPDX-License-Identifier: MIT
import logging
import typing as typ
import datetime as dt
from . import lex_id
@ -34,6 +35,8 @@ def bump(old_version: str, *, release: str=None) -> str:
new_calver = old_ver.calver
new_build = lex_id.next_id(old_ver.build[1:])
new_release: typ.Optional[str] = None
if release is None:
if old_ver.release:
# preserve existing release

1
test/test_cli.py Normal file
View file

@ -0,0 +1 @@
from pycalver import __main__

View file

@ -1,5 +1,86 @@
import io
from pycalver import config
def test_parse():
pass
def test_parse_default_config():
buf = io.StringIO()
for line in config.default_config_lines():
buf.write(line + "\n")
buf.seek(0)
cfg = config.parse_buffer(buf)
assert cfg
assert cfg.current_version.endswith(".0001-dev")
assert cfg.tag
assert cfg.commit
assert "setup.py" in cfg.file_patterns
assert "setup.cfg" in cfg.file_patterns
assert "README.rst" in cfg.file_patterns
def test_parse(tmpdir):
setup_path = tmpdir.mkdir("minimal").join("setup.cfg")
setup_path.write("\n".join((
"[pycalver]",
f"current_version = v201808.0001-dev",
"commit = False",
"tag = False",
"",
"[pycalver:file:setup.cfg]",
"patterns = ",
" current_version = {version}",
)))
cfg = config.parse(str(setup_path))
assert cfg
assert cfg.current_version == "v201808.0001-dev"
assert not cfg.tag
assert not cfg.commit
assert cfg.file_patterns == {"setup.cfg": ["current_version = {version}"]}
def test_parse_config_missing(tmpdir):
cfg = config.parse("does_not_exist/setup.cfg")
assert cfg is None
setup_path = tmpdir.mkdir("fail").join("setup.cfg")
cfg = config.parse(str(setup_path))
assert cfg is None
def test_parse_empty_config(tmpdir):
setup_path = tmpdir.mkdir("fail").join("setup.cfg")
setup_path.write("")
cfg = config.parse(str(setup_path))
assert cfg is None
def test_parse_missing_version(tmpdir):
setup_path = tmpdir.mkdir("fail").join("setup.cfg")
setup_path.write("\n".join((
"[pycalver]",
# f"current_version = v201808.0001-dev",
"commit = False",
)))
cfg = config.parse(str(setup_path))
assert cfg is None
def test_parse_invalid_version(tmpdir):
setup_path = tmpdir.mkdir("fail").join("setup.cfg")
setup_path.write("\n".join((
"[pycalver]",
f"current_version = 0.1.0",
"commit = False",
)))
cfg = config.parse(str(setup_path))
assert cfg is None