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=")
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
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")
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=')
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")