示例#1
0
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)
示例#2
0
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"
示例#3
0
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)
示例#4
0
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)
示例#5
0
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
示例#6
0
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)
示例#7
0
def test_parse_error_nopadding():
    try:
        version.parse_version_info("v201809.2b0")
        assert False
    except version.PatternError as err:
        pass
示例#8
0
def test_parse_error_noprefix():
    try:
        version.parse_version_info("201809.0002")
        assert False
    except version.PatternError as err:
        pass
示例#9
0
def test_parse_error_empty():
    try:
        version.parse_version_info("")
        assert False
    except version.PatternError as err:
        pass
示例#10
0
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)
示例#11
0
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)
示例#12
0
def test_parse_error_empty():
    try:
        version.parse_version_info("")
        assert False
    except version.PatternError as err:
        assert "Invalid version string" in str(err)