Пример #1
0
def test_conda_create_args(newconfig, mocksession):
    config = newconfig(
        [],
        """
        [testenv:py123]
        conda_create_args=
            --override-channels
    """,
    )

    venv = VirtualEnv(config.envconfigs["py123"])
    assert venv.path == config.envconfigs["py123"].envdir

    with mocksession.newaction(venv.name, "getenv") as action:
        tox_testenv_create(action=action, venv=venv)
    pcalls = mocksession._pcalls
    assert len(pcalls) >= 1
    call = pcalls[-1]
    assert "conda" in call.args[0]
    assert "create" == call.args[1]
    assert "--yes" == call.args[2]
    assert "-p" == call.args[3]
    assert venv.path == call.args[4]
    assert call.args[5] == "--override-channels"
    assert call.args[6].startswith("python=")
Пример #2
0
def create_test_env(config, mocksession, envname):

    venv = VirtualEnv(config.envconfigs[envname])
    with mocksession.newaction(venv.name, "getenv") as action:
        tox_testenv_create(action=action, venv=venv)
    pcalls = mocksession._pcalls
    assert len(pcalls) >= 1
    pcalls[:] = []

    return venv, action, pcalls
Пример #3
0
def test_conda_env_and_spec(tmpdir, newconfig, mocksession):
    """Test environment creation when conda_env and conda_spec are given"""
    yml = tmpdir.join("conda-env.yml")
    yml.write("""
        name: tox-conda
        channels:
          - conda-forge
          - nodefaults
        dependencies:
          - numpy
          - astropy
        """)
    txt = tmpdir.join("conda-spec.txt")
    txt.write("""
        pytest
        """)
    config = newconfig(
        [],
        """
        [testenv:py123]
        conda_env={}
        conda_spec={}
        """.format(str(yml), str(txt)),
    )
    venv, action, pcalls = create_test_env(config, mocksession, "py123")

    assert venv.envconfig.conda_env
    assert venv.envconfig.conda_spec

    with mocksession.newaction(venv.name, "getenv") as action:
        tox_testenv_create(action=action, venv=venv)
    pcalls = mocksession._pcalls
    assert len(pcalls) >= 1
    call = pcalls[-1]
    cmd = call.args
    assert "conda" in os.path.split(cmd[0])[-1]
    assert cmd[1:4] == ["env", "create", "-p"]
    assert venv.path == call.args[4]
    assert call.args[5].startswith("--file")
    assert call.args[6].endswith("conda-env.yml")

    with mocksession.newaction(venv.name, "getenv") as action:
        tox_testenv_install_deps(action=action, venv=venv)
    pcalls = mocksession._pcalls
    # We expect conda_spec to be appended to conda deps install
    assert len(pcalls) >= 1
    call = pcalls[-1]
    conda_cmd = call.args
    assert "conda" in os.path.split(conda_cmd[0])[-1]
    assert conda_cmd[1:6] == ["install", "--quiet", "--yes", "-p", venv.path]
    # Make sure that python is explicitly given as part of every conda install
    # in order to avoid inadvertent upgrades of python itself.
    assert conda_cmd[6].startswith("python=")
    assert conda_cmd[-1].startswith("--file")
    assert conda_cmd[-1].endswith("conda-spec.txt")
Пример #4
0
def test_conda_create(newconfig, mocksession):
    config = newconfig(
        [],
        """
        [testenv:py123]
    """,
    )

    venv = VirtualEnv(config.envconfigs["py123"], session=mocksession)
    assert venv.path == config.envconfigs['py123'].envdir

    action = mocksession.newaction(venv, "getenv")
    tox_testenv_create(action=action, venv=venv)
    pcalls = mocksession._pcalls
    assert len(pcalls) == 1
    assert 'conda' in pcalls[0].args[0]
    assert 'create' == pcalls[0].args[1]
    assert '--yes' == pcalls[0].args[2]
    assert '-p' == pcalls[0].args[3]
    assert venv.path == pcalls[0].args[4]
    assert pcalls[0].args[5].startswith('python=')
Пример #5
0
def test_conda_env(tmpdir, newconfig, mocksession):
    """Test environment creation when conda_env given"""
    yml = tmpdir.join("conda-env.yml")
    yml.write("""
        name: tox-conda
        channels:
          - conda-forge
          - nodefaults
        dependencies:
          - numpy
          - astropy
          - pip:
            - pytest
        """)
    config = newconfig(
        [],
        """
        [testenv:py123]
        conda_env={}
        """.format(str(yml)),
    )

    venv = VirtualEnv(config.envconfigs["py123"])
    assert venv.path == config.envconfigs["py123"].envdir

    venv, action, pcalls = create_test_env(config, mocksession, "py123")
    assert venv.envconfig.conda_env

    with mocksession.newaction(venv.name, "getenv") as action:
        tox_testenv_create(action=action, venv=venv)
    pcalls = mocksession._pcalls
    assert len(pcalls) >= 1
    call = pcalls[-1]
    cmd = call.args
    assert "conda" in os.path.split(cmd[0])[-1]
    assert cmd[1:4] == ["env", "create", "-p"]
    assert venv.path == call.args[4]
    assert call.args[5].startswith("--file")
    assert call.args[6].endswith("conda-env.yml")