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) 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_parse_version_info(): version_str = "v201712.0001-alpha" version_nfo = version.parse_version_info(version_str) # assert version_nfo.pep440_version == "201712.1a0" # assert version_nfo.version == "v201712.0001-alpha" assert version_nfo.year == 2017 assert version_nfo.month == 12 assert version_nfo.bid == "0001" assert version_nfo.tag == "alpha" version_str = "v201712.0001" version_nfo = version.parse_version_info(version_str) # assert version_nfo.pep440_version == "201712.1" # assert version_nfo.version == "v201712.0001" assert version_nfo.year == 2017 assert version_nfo.month == 12 assert version_nfo.bid == "0001" assert version_nfo.tag == "final"
def test_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) 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) # make sure optional release tag is added back on assert len(new_lines) == len(old_lines) assert "2019.0004-beta" not in "\n".join(old_lines) assert "2019.0004-beta" 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_vinfo = version.parse_version_info("v201911.0003") new_lines = rewrite.rewrite_lines(patterns, new_vinfo, 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_parse_versions(pattern_str, line, expected_vinfo): pattern_re = patterns.compile_pattern(pattern_str) version_match = pattern_re.search(line) if expected_vinfo is None: assert version_match is None return assert version_match is not None version_str = version_match.group(0) version_info = version.parse_version_info(version_str, pattern_str) assert version_info == expected_vinfo
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) 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: assert "setup.py" in str(ex)
def test_parse_error_nopadding(): try: version.parse_version_info("v201809.2b0") assert False except version.PatternError as err: pass
def test_parse_error_noprefix(): try: version.parse_version_info("201809.0002") assert False except version.PatternError as err: pass
def test_parse_error_empty(): try: version.parse_version_info("") assert False except version.PatternError as err: pass
def test_parse_error_nopadding(): try: version.parse_version_info("v201809.2b0") assert False except version.PatternError as err: assert "Invalid version string" in str(err)
def test_parse_error_noprefix(): try: version.parse_version_info("201809.0002") assert False except version.PatternError as err: assert "Invalid version string" in str(err)
def test_parse_error_empty(): try: version.parse_version_info("") assert False except version.PatternError as err: assert "Invalid version string" in str(err)