Exemplo n.º 1
0
def test_install_recreate(newmocksession, tmpdir):
    pkg = tmpdir.ensure("package.tar.gz")
    mocksession = newmocksession(
        ["--recreate"],
        """\
        [testenv]
        deps=xyz
        """,
    )
    venv = mocksession.getvenv("python")

    with mocksession.newaction(venv.name, "update") as action:
        venv.update(action)
        installpkg(venv, pkg)
        mocksession.report.expect("verbosity0", "*create*")
        venv.update(action)
        mocksession.report.expect("verbosity0", "*recreate*")
Exemplo n.º 2
0
def test_installpkg_indexserver(newmocksession, tmpdir):
    mocksession = newmocksession(
        [],
        """\
        [tox]
        indexserver =
            default = ABC
        """,
    )
    venv = mocksession.getvenv("python")
    pcalls = mocksession._pcalls
    p = tmpdir.ensure("distfile.tar.gz")
    installpkg(venv, p)
    # two different index servers, two calls
    assert len(pcalls) == 1
    args = " ".join(pcalls[0].args)
    assert "-i ABC" in args
Exemplo n.º 3
0
def test_env_variables_added_to_pcall(tmpdir, mocksession, newconfig,
                                      monkeypatch):
    monkeypatch.delenv("PYTHONPATH", raising=False)
    pkg = tmpdir.ensure("package.tar.gz")
    monkeypatch.setenv("X123", "123")
    monkeypatch.setenv("YY", "456")
    config = newconfig(
        [],
        """\
        [testenv:python]
        commands=python -V
        passenv = x123
        setenv =
            ENV_VAR = value
            PYTHONPATH = value
        """,
    )
    mocksession._clearmocks()
    mocksession.new_config(config)
    venv = mocksession.getvenv("python")
    installpkg(venv, pkg)
    venv.test()

    pcalls = mocksession._pcalls
    assert len(pcalls) == 2
    for x in pcalls:
        env = x.env
        assert env is not None
        assert "ENV_VAR" in env
        assert env["ENV_VAR"] == "value"
        assert env["VIRTUAL_ENV"] == str(venv.path)
        assert env["X123"] == "123"
        assert "PYTHONPATH" in env
        assert env["PYTHONPATH"] == "value"
    # all env variables are passed for installation
    assert pcalls[0].env["YY"] == "456"
    assert "YY" not in pcalls[1].env

    assert {"ENV_VAR", "VIRTUAL_ENV", "PYTHONHASHSEED", "X123",
            "PATH"}.issubset(pcalls[1].env)

    # setenv does not trigger PYTHONPATH warnings
    mocksession.report.not_expect("warning",
                                  "*Discarding $PYTHONPATH from environment*")
Exemplo n.º 4
0
def test_path_change(tmpdir, mocksession, newconfig, monkeypatch):
    config = newconfig(
        [],
        """\
        [testenv:python]
        setenv =
            PATH = {env:PATH}{:}{toxinidir}/bin
        """,
    )
    pkg = tmpdir.ensure("package.tar.gz")
    mocksession._clearmocks()
    mocksession.new_config(config)
    venv = mocksession.getvenv("python")
    installpkg(venv, pkg)
    venv.test()

    pcalls = mocksession._pcalls
    for x in pcalls:
        path = x.env["PATH"]
        assert os.environ["PATH"] in path
        assert path.endswith(str(venv.envconfig.config.toxinidir) + "/bin")
Exemplo n.º 5
0
def test_env_variables_added_to_pcall(tmpdir, mocksession, newconfig, monkeypatch, tmp_path):
    monkeypatch.delenv("PYTHONPATH", raising=False)
    pkg = tmpdir.ensure("package.tar.gz")
    monkeypatch.setenv("X123", "123")
    monkeypatch.setenv("YY", "456")
    env_path = tmp_path / ".env"
    env_file_content = "ENV_FILE_VAR = file_value"
    env_path.write_text(env_file_content.decode() if PY2 else env_file_content)

    config = newconfig(
        [],
        r"""
        [base]
        base_var = base_value

        [testenv:python]
        commands=python -V
        passenv = x123
        setenv =
            ENV_VAR = value
            ESCAPED_VAR = \{value\}
            ESCAPED_VAR2 = \\{value\\}
            BASE_VAR = {[base]base_var}
            PYTHONPATH = value
            TTY_VAR = {tty:ON_VALUE:OFF_VALUE}
            COLON = {:}
            REUSED_FILE_VAR = reused {env:ENV_FILE_VAR}
            file| %s
        """
        % env_path,
    )
    mocksession._clearmocks()
    mocksession.new_config(config)
    venv = mocksession.getvenv("python")
    installpkg(venv, pkg)
    venv.test()

    pcalls = mocksession._pcalls
    assert len(pcalls) == 2
    for x in pcalls:
        env = x.env
        assert env is not None
        assert "ENV_VAR" in env
        assert env["ENV_VAR"] == "value"
        assert env["ESCAPED_VAR"] == "{value}"
        assert env["ESCAPED_VAR2"] == r"\{value\}"
        assert env["COLON"] == ";" if sys.platform == "win32" else ":"
        assert env["TTY_VAR"] == "OFF_VALUE"
        assert env["ENV_FILE_VAR"] == "file_value"
        assert env["REUSED_FILE_VAR"] == "reused file_value"
        assert env["BASE_VAR"] == "base_value"
        assert env["VIRTUAL_ENV"] == str(venv.path)
        assert env["X123"] == "123"
        assert "PYTHONPATH" in env
        assert env["PYTHONPATH"] == "value"

    # all env variables are passed for installation
    assert pcalls[0].env["YY"] == "456"
    assert "YY" not in pcalls[1].env

    assert {"ENV_VAR", "VIRTUAL_ENV", "PYTHONHASHSEED", "X123", "PATH"}.issubset(pcalls[1].env)

    # setenv does not trigger PYTHONPATH warnings
    mocksession.report.not_expect("warning", "*Discarding $PYTHONPATH from environment*")