コード例 #1
0
ファイル: test_patterns.py プロジェクト: mbarkhau/bumpver
def test_v1_patterns(pattern_str, line, expected):
    pattern = v1patterns.compile_pattern(pattern_str)
    result = pattern.regexp.search(line)
    if result is None:
        assert expected is None, (pattern_str, line)
    else:
        result_val = result.group(0)
        assert result_val == expected, (pattern_str, line)
コード例 #2
0
def test_v1_rewrite_lines():
    version_pattern = "{pycalver}"
    new_vinfo = v1version.parse_version_info("v201811.0123-beta",
                                             version_pattern)
    patterns = [
        v1patterns.compile_pattern(version_pattern,
                                   '__version__ = "{pycalver}"')
    ]
    lines = v1rewrite.rewrite_lines(patterns, new_vinfo,
                                    ['__version__ = "v201809.0002-beta"'])
    assert lines == ['__version__ = "v201811.0123-beta"']

    patterns = [
        v1patterns.compile_pattern(version_pattern,
                                   '__version__ = "{pep440_version}"')
    ]
    lines = v1rewrite.rewrite_lines(patterns, new_vinfo,
                                    ['__version__ = "201809.2b0"'])
    assert lines == ['__version__ = "201811.123b0"']
コード例 #3
0
def test_v1_rewrite_lines_basic():
    pattern = v1patterns.compile_pattern("{pycalver}",
                                         '__version__ = "{pycalver}"')
    new_vinfo = v1version.parse_version_info("v201911.0003")

    old_lines = REWRITE_FIXTURE.splitlines()
    new_lines = v1rewrite.rewrite_lines([pattern], 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)
コード例 #4
0
def test_v1_diff():
    version_pattern = "{year}{build}{release}"
    raw_pattern = '__version__ = "{year}{build}{release}"'
    pattern = v1patterns.compile_pattern(version_pattern, raw_pattern)
    file_patterns = {"src/bumpver/__init__.py": [pattern]}

    old_vinfo = v1version.parse_version_info("v201809.0123")
    new_vinfo = v1version.parse_version_info("v201911.1124")
    assert new_vinfo > old_vinfo

    old_vinfo = v1version.parse_version_info("2018.0123", version_pattern)
    new_vinfo = v1version.parse_version_info("2019.1124", version_pattern)

    diff_str = v1rewrite.diff(old_vinfo, new_vinfo, file_patterns)
    lines = diff_str.split("\n")

    assert lines[:2] == [
        "--- src/bumpver/__init__.py",
        "+++ src/bumpver/__init__.py",
    ]

    assert lines[6].startswith('-__version__ = "20')
    assert lines[7].startswith('+__version__ = "20')

    assert not lines[6].startswith('-__version__ = "2018.0123"')

    assert lines[7] == '+__version__ = "2019.1124"'

    raw_pattern = "Copyright (c) 2018-{year}"
    pattern = v1patterns.compile_pattern(version_pattern, raw_pattern)
    file_patterns = {'LICENSE': [pattern]}
    diff_str = v1rewrite.diff(old_vinfo, new_vinfo, file_patterns)

    lines = diff_str.split("\n")
    assert lines[3].startswith("-MIT License Copyright (c) 2018-20")
    assert lines[4].startswith("+MIT License Copyright (c) 2018-2019")
コード例 #5
0
ファイル: test_parse.py プロジェクト: mbarkhau/bumpver
def test_default_parse_patterns():
    lines = SETUP_PY_FIXTURE.splitlines()
    patterns = ["{pycalver}", "{pep440_pycalver}"]
    re_patterns = [v1patterns.compile_pattern(p) for p in patterns]
    matches = list(parse.iter_matches(lines, re_patterns))
    assert len(matches) == 2

    assert matches[0].lineno == 3
    assert matches[1].lineno == 6

    assert matches[0].pattern == re_patterns[0]
    assert matches[1].pattern == re_patterns[1]

    assert matches[0].match == "v201712.0002-alpha"
    assert matches[1].match == "201712.2a0"
コード例 #6
0
ファイル: test_parse.py プロジェクト: mbarkhau/bumpver
def test_explicit_parse_patterns():
    lines = SETUP_PY_FIXTURE.splitlines()

    patterns = ["__version__ = '{pycalver}'", "version='{pep440_pycalver}'"]
    re_patterns = [v1patterns.compile_pattern(p) for p in patterns]
    matches = list(parse.iter_matches(lines, re_patterns))
    assert len(matches) == 2

    assert matches[0].lineno == 3
    assert matches[1].lineno == 6

    assert matches[0].pattern == re_patterns[0]
    assert matches[1].pattern == re_patterns[1]

    assert matches[0].match == "__version__ = 'v201712.0002-alpha'"
    assert matches[1].match == "version='201712.2a0'"
コード例 #7
0
def test_v1_rewrite_final():
    # Patterns written with {release_tag} placeholder preserve
    # the release tag even if the new version is -final

    pattern = v1patterns.compile_pattern(
        "v{year}{month}.{build_no}-{release_tag}",
        '__version__ = "v{year}{month}.{build_no}-{release_tag}"',
    )
    new_vinfo = v1version.parse_version_info("v201911.0003")

    old_lines = REWRITE_FIXTURE.splitlines()
    new_lines = v1rewrite.rewrite_lines([pattern], 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)
コード例 #8
0
ファイル: test_parse.py プロジェクト: mbarkhau/bumpver
def test_badge_parse_patterns():
    lines = README_RST_FIXTURE.splitlines()

    patterns = [
        "badge/CalVer-{calver}{build}-{release}-blue.svg",
        ":alt: CalVer {pycalver}"
    ]
    re_patterns = [v1patterns.compile_pattern(p) for p in patterns]
    matches = list(parse.iter_matches(lines, re_patterns))

    assert len(matches) == 2

    assert matches[0].lineno == 3
    assert matches[1].lineno == 5

    assert matches[0].pattern == re_patterns[0]
    assert matches[1].pattern == re_patterns[1]

    assert matches[0].match == "badge/CalVer-v201809.0002--beta-blue.svg"
    assert matches[1].match == ":alt: CalVer v201809.0002-beta"
コード例 #9
0
def test_v1_iter_rewritten():
    version_pattern = "{year}{build}{release}"
    new_vinfo = v1version.parse_version_info("2018.0123", version_pattern)

    init_pattern = v1patterns.compile_pattern(
        version_pattern, '__version__ = "{year}{build}{release}"')
    file_patterns = {"src/bumpver/__init__.py": [init_pattern]}
    rewritten_datas = v1rewrite.iter_rewritten(file_patterns, new_vinfo)
    rfd = list(rewritten_datas)[0]
    expected = [
        "# This file is part of the bumpver project",
        "# https://github.com/mbarkhau/bumpver",
        "#",
        "# Copyright (c) 2018-2021 Manuel Barkhau ([email protected]) - MIT License",
        "# SPDX-License-Identifier: MIT",
        '"""BumpVer: A CLI program for versioning."""',
        '',
        '__version__ = "2018.0123"',
        '',
    ]
    assert rfd.new_lines == expected
コード例 #10
0
def test_v1_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)
        original_pattern = patterns["setup.py"][0]
        invalid_pattern = v1patterns.compile_pattern(
            original_pattern.version_pattern,
            original_pattern.raw_pattern + ".invalid",
        )
        patterns["setup.py"] = [invalid_pattern]

        try:
            old_vinfo = v1version.parse_version_info("v201808.0233")
            new_vinfo = v1version.parse_version_info("v201809.1234")
            list(v1rewrite.diff(old_vinfo, new_vinfo, patterns))
            assert False, "expected rewrite.NoPatternMatch"
        except rewrite.NoPatternMatch as ex:
            assert "setup.py" in str(ex)
コード例 #11
0
def test_v1_optional_release():
    version_pattern = "{year}.{build_no}{release}"
    new_vinfo = v1version.parse_version_info("2019.0003", version_pattern)

    raw_pattern = '__version__ = "{year}.{build_no}{release}"'
    pattern = v1patterns.compile_pattern(version_pattern, raw_pattern)

    old_lines = OPTIONAL_RELEASE_FIXTURE.splitlines()
    new_lines = v1rewrite.rewrite_lines([pattern], new_vinfo, old_lines)

    assert len(new_lines) == len(old_lines)
    assert "2019.0003" not in "\n".join(old_lines)
    assert "2019.0003" in "\n".join(new_lines)
    assert '__version__ = "2019.0003"' in "\n".join(new_lines)

    new_vinfo = v1version.parse_version_info("2019.0004-beta", version_pattern)
    new_lines = v1rewrite.rewrite_lines([pattern], 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)
    assert '__version__ = "2019.0004-beta"' in "\n".join(new_lines)
コード例 #12
0
ファイル: test_version.py プロジェクト: mbarkhau/bumpver
def test_v1_parse_versions(pattern_str, line, expected_vinfo):
    if "{" in pattern_str:
        pattern = v1patterns.compile_pattern(pattern_str)
        version_match = pattern.regexp.search(line)
    else:
        pattern = v2patterns.compile_pattern(pattern_str)
        version_match = pattern.regexp.search(line)

    if expected_vinfo is None:
        assert version_match is None
    else:
        assert version_match is not None

        version_str = version_match.group(0)

        if "{" in pattern_str:
            version_info = v1version.parse_version_info(
                version_str, pattern_str)
            assert version_info == expected_vinfo
        else:
            version_info = v2version.parse_version_info(
                version_str, pattern_str)
            assert version_info == expected_vinfo
コード例 #13
0
ファイル: test_patterns.py プロジェクト: mbarkhau/bumpver
def test_curly_escapes():
    pattern_str = 'package_metadata = {"name": "mypackage", "version": "{pycalver}"}'
    pattern = v1patterns.compile_pattern(pattern_str)
    match = pattern.regexp.search(CURLY_BRACE_FIXTURE)
    expected = 'package_metadata = {"name": "mypackage", "version": "v201812.0123-beta"}'
    assert match.group(0) == expected
コード例 #14
0
ファイル: test_patterns.py プロジェクト: mbarkhau/bumpver
def test_pattern_escapes():
    pattern_str = 'click.version_option(version="{pycalver}")'
    pattern = v1patterns.compile_pattern(pattern_str)
    match = pattern.regexp.search(CLI_MAIN_FIXTURE)
    expected = 'click.version_option(version="v201812.0123-beta")'
    assert match.group(0) == expected