コード例 #1
0
def test_format_envlist_generator(tmp_path):
    path = tmp_path / "tox.ini"
    path.write_text(
        "[tox]\nenvlist={py36,py37}-django{20,21},{py36,py37}-mango{20,21},py38\n"
    )
    outcome = format_tox_ini(path)
    assert outcome == "[tox]\nenvlist =\n  py38\n  {py37, py36}-django{21, 20}\n  {py37, py36}-mango{21, 20}\n"
コード例 #2
0
def test_format_tox_ini_handles_trailing_comma(tox_ini):
    """tox.ini gets formatted without adding additional whitespace

    This was previously caused by a trailing comma in the `envlist`.
    """
    tox_ini.write_text("[tox]\nenvlist=\n    py38,\n    pkg,\n" "[testenv:pkg]\na=b\n")
    result = format_tox_ini(tox_ini)
    assert result == "[tox]\nenvlist =\n    py38\n    pkg\n\n[testenv:pkg]\na = b\n"
コード例 #3
0
def test_format_test_env_ref(tox_ini, key, before, pre, post, expected):
    text = (
        f"[testenv]\n{key}={before}\n[testenv:py]"
        f"\n{key}=\n {pre}\n {{[testenv:x]X}}\n {{[testenv]{key}}}\n {post}\n"
    )
    tox_ini.write_text(text)
    outcome = format_tox_ini(tox_ini)
    expected = f"[testenv]\n{key} ={before}\n\n[testenv:py]\n{key} ={expected}\n"
    assert outcome == expected
コード例 #4
0
def test_tox_section_order(tox_ini):
    tox_ini.write_text(
        "[tox]\nskip_missing_interpreters=true\nisolated_build=true\nminversion=3.14\nskipsdist=false\nenvlist=py37"
    )
    outcome = format_tox_ini(tox_ini)
    assert (
        outcome == "[tox]\nenvlist =\n    py37\nisolated_build = true\nskipsdist = false\n"
        "skip_missing_interpreters = true\nminversion = 3.14\n"
    )
コード例 #5
0
def test_pin(tox_ini):
    tox_ini.write_text(
        "[tox]\nenvlist=py38,pkg,py,py39,pypy3,pypy,pin,extra\n"
        "[testenv:py38]\ne=f\n"
        "[testenv:pkg]\nc=d\n"
        "[testenv:py]\ng=h\n"
        "[testenv:py39]\ni=j\n"
        "[testenv:pypy3]\nk=l\n"
        "[testenv:pypy]\nm=n\n"
        "[testenv:pin]\na=b\n"
        "[testenv:extra]\no=p\n"
    )
    result = format_tox_ini(tox_ini, ToxIniFmtNamespace(pin_toxenvs=["pin", "pkg"]))

    expected = dedent(
        """
        [tox]
        envlist =
            pin
            pkg
            py39
            py38
            py
            pypy3
            pypy
            extra

        [testenv:pin]
        a = b

        [testenv:pkg]
        c = d

        [testenv:py39]
        i = j

        [testenv:py38]
        e = f

        [testenv:py]
        g = h

        [testenv:pypy3]
        k = l

        [testenv:pypy]
        m = n

        [testenv:extra]
        o = p
    """
    ).lstrip()
    assert result == expected
コード例 #6
0
def test_format_test_env(tox_ini, section):
    content = dedent(
        """
    usedevelop = True
    skip_install =\tFalse
    parallel_show_output = false
    commands = \te
      \tf  \\
      \t \\
      \t g
    extras = \tc,d
    description = \tdesc\t
    deps = \tb\t
      \ta\t
    basepython=\tpython3.8\t
    passenv=z y x
    setenv= C=D
            E =F

            A = B
    """
    ).strip()
    tox_ini.write_text(f"[testenv]\n{content}")
    outcome = format_tox_ini(tox_ini)
    expected = dedent(
        """
        [testenv]
        description = desc
        passenv =
            x
            y
            z
        setenv =
            A = B
            C = D
            E = F
        basepython = python3.8
        skip_install = false
        usedevelop = true
        deps =
            a
            b
        extras =
            c
            d
        parallel_show_output = false
        commands =
            e
            f \\
              g
        """
    ).lstrip()
    assert outcome == expected
コード例 #7
0
def test_section_order(tox_ini):
    tox_ini.write_text(
        dedent(
            """
        [testenv:py37]
        c = d
        [testenv]
        a = b
        [testenv:dev]
        g = h

        [magic]
        i = j
        [tox]
        envlist = py38,py37
        e = f

        """
        )
    )
    result = format_tox_ini(tox_ini)

    expected = dedent(
        """
        [tox]
        envlist =
            py38
            py37
        e = f

        [testenv]
        a = b

        [testenv:py37]
        c = d

        [testenv:dev]
        g = h

        [magic]
        i = j
    """
    ).lstrip()
    assert result == expected
コード例 #8
0
ファイル: __main__.py プロジェクト: Julian/tox-ini-fmt
def run(args: Optional[Sequence[str]] = None) -> int:
    opts = cli_args(sys.argv[1:] if args is None else args)
    formatted = format_tox_ini(opts.tox_ini)
    before = opts.tox_ini.read_text()
    changed = before != formatted
    if opts.stdout:  # stdout just prints new format to stdout
        print(formatted, end="")
    else:
        opts.tox_ini.write_text(formatted)
        try:
            name = str(opts.tox_ini.relative_to(Path.cwd()))
        except ValueError:
            name = str(opts.tox_ini)
        diff = (difflib.unified_diff(before.splitlines(),
                                     formatted.splitlines(),
                                     fromfile=name,
                                     tofile=name) if changed else [])
        if diff:
            print("\n".join(diff))  # print diff on change
        else:
            print(f"no change for {name}")
    # exit with non success on change
    return 1 if changed else 0
コード例 #9
0
def test_pin_missing(tox_ini):
    tox_ini.write_text("[tox]\nenvlist=py")

    with pytest.raises(RuntimeError, match=r"missing tox environment\(s\) to pin missing_1, missing_2"):
        format_tox_ini(tox_ini, ToxIniFmtNamespace(pin_toxenvs=["missing_1", "missing_2"]))
コード例 #10
0
def test_no_tox_section(tox_ini):
    tox_ini.write_text("")
    assert format_tox_ini(tox_ini) == "\n"
コード例 #11
0
def test_fail_on_bad_set_env(tox_ini):
    tox_ini.write_text("[testenv]\nsetenv = A")
    with pytest.raises(RuntimeError, match="invalid line A in setenv"):
        format_tox_ini(tox_ini)
コード例 #12
0
def test_tox_fmt_boolean(tox_ini, key, value, result):
    tox_ini.write_text(f"[tox]\n{key}={value}")
    outcome = format_tox_ini(tox_ini)
    expected = f"[tox]\n{key} = {result}\n"
    assert outcome == expected
コード例 #13
0
def test_format_envlist_start_newline(tox_ini):
    ok = "[tox]\nenvlist =\n    py39\n    py38\n"
    tox_ini.write_text(ok)
    outcome = format_tox_ini(tox_ini)
    assert outcome == ok
コード例 #14
0
def test_format_envlist_simple(tox_ini):
    tox_ini.write_text("[tox]\nenvlist=py39,py38\n")
    outcome = format_tox_ini(tox_ini)
    assert outcome == "[tox]\nenvlist =\n    py39\n    py38\n"