def test_create(mocksession, newconfig): config = newconfig( [], """ [testenv:py123] """, ) envconfig = config.envconfigs["py123"] venv = VirtualEnv(envconfig, session=mocksession) assert venv.path == envconfig.envdir assert not venv.path.check() action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) >= 1 args = pcalls[0].args assert "virtualenv" == str(args[2]) if not tox.INFO.IS_WIN: # realpath is needed for stuff like the debian symlinks our_sys_path = py.path.local(sys.executable).realpath() assert our_sys_path == py.path.local(args[0]).realpath() # assert Envconfig.toxworkdir in args assert venv.getcommandpath("easy_install", cwd=py.path.local()) interp = venv._getliveconfig().base_resolved_python_path assert interp == venv.envconfig.python_info.executable assert venv.path_config.check(exists=False)
def test_create_sitepackages(monkeypatch, mocksession, newconfig): config = newconfig([], """ [testenv:site] sitepackages=True [testenv:nosite] sitepackages=False """) envconfig = config.envconfigs['site'] venv = VirtualEnv(envconfig, session=mocksession) action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) >= 1 args = pcalls[0].args assert "--system-site-packages" in map(str, args) mocksession._clearmocks() envconfig = config.envconfigs['nosite'] venv = VirtualEnv(envconfig, session=mocksession) action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) >= 1 args = pcalls[0].args assert "--system-site-packages" not in map(str, args) assert "--no-site-packages" not in map(str, args)
def test_install_deps_wildcard(newmocksession): mocksession = newmocksession([], """ [tox] distshare = {toxworkdir}/distshare [testenv:py123] deps= {distshare}/dep1-* """) venv = mocksession.getenv("py123") action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 distshare = venv.session.config.distshare distshare.ensure("dep1-1.0.zip") distshare.ensure("dep1-1.1.zip") tox_testenv_install_deps(action=action, venv=venv) assert len(pcalls) == 2 args = pcalls[-1].args assert pcalls[-1].cwd == venv.envconfig.config.toxinidir assert "pip" in str(args[0]) assert args[1] == "install" args = [arg for arg in args if str(arg).endswith("dep1-1.1.zip")] assert len(args) == 1
def test_install_python3(tmpdir, newmocksession): if not py.path.local.sysfind('python3.3'): pytest.skip("needs python3.3") mocksession = newmocksession([], """ [testenv:py123] basepython=python3.3 deps= dep1 dep2 """) venv = mocksession.getenv('py123') action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 args = pcalls[0].args assert str(args[2]) == 'virtualenv' pcalls[:] = [] action = mocksession.newaction(venv, "hello") venv._install(["hello"], action=action) assert len(pcalls) == 1 args = pcalls[0].args assert "pip" in args[0] for _ in args: assert "--download-cache" not in args, args
def test_install_deps_indexserver(newmocksession): mocksession = newmocksession([], """ [tox] indexserver = abc = ABC abc2 = ABC [testenv:py123] deps= dep1 :abc:dep2 :abc2:dep3 """) venv = mocksession.getenv('py123') action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 pcalls[:] = [] tox_testenv_install_deps(action=action, venv=venv) # two different index servers, two calls assert len(pcalls) == 3 args = " ".join(pcalls[0].args) assert "-i " not in args assert "dep1" in args args = " ".join(pcalls[1].args) assert "-i ABC" in args assert "dep2" in args args = " ".join(pcalls[2].args) assert "-i ABC" in args assert "dep3" in args
def test_install_python3(newmocksession): if not py.path.local.sysfind("python3"): pytest.skip("needs python3") mocksession = newmocksession( [], """ [testenv:py123] basepython=python3 deps= dep1 dep2 """, ) venv = mocksession.getenv("py123") action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 args = pcalls[0].args assert str(args[2]) == "virtualenv" pcalls[:] = [] action = mocksession.newaction(venv, "hello") venv._install(["hello"], action=action) assert len(pcalls) == 1 args = pcalls[0].args assert py.path.local.sysfind("python") == args[0] assert ["-m", "pip"] == args[1:3] for _ in args: assert "--download-cache" not in args, args
def test_install_deps_indexserver__with_deps(newmocksession): mocksession = newmocksession( [], """\ [tox] [testenv:py123] deps= dep1 """, ) venv = mocksession.getvenv("py123") with mocksession.newaction(venv.name, "getenv") as action: tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 pcalls[:] = [] tox_testenv_install_deps(action=action, venv=venv) assert len(pcalls) == 2 args = " ".join(pcalls[0].args) assert args.endswith('-m pip install dep1 pipenv') args = " ".join(pcalls[1].args) assert args.endswith('-m pipenv install --dev')
def test_install_deps_wildcard(newmocksession): mocksession = newmocksession( [], """\ [tox] distshare = {toxworkdir}/distshare [testenv:py123] deps= {distshare}/dep1-* """, ) venv = mocksession.getvenv("py123") with mocksession.newaction(venv.name, "getenv") as action: tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 distshare = venv.envconfig.config.distshare distshare.ensure("dep1-1.0.zip") distshare.ensure("dep1-1.1.zip") tox_testenv_install_deps(action=action, venv=venv) assert len(pcalls) == 2 args = pcalls[-1].args assert pcalls[-1].cwd == venv.envconfig.config.toxinidir assert py.path.local.sysfind("python") == args[0] assert ["-m", "pip"] == args[1:3] assert args[3] == "install" args = [arg for arg in args if str(arg).endswith("dep1-1.1.zip")] assert len(args) == 1
def test_create_sitepackages(mocksession, newconfig): config = newconfig( [], """\ [testenv:site] sitepackages=True [testenv:nosite] sitepackages=False """, ) mocksession.new_config(config) venv = mocksession.getvenv("site") with mocksession.newaction(venv.name, "getenv") as action: tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) >= 1 args = pcalls[0].args assert "--system-site-packages" in map(str, args) mocksession._clearmocks() venv = mocksession.getvenv("nosite") with mocksession.newaction(venv.name, "getenv") as action: tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) >= 1 args = pcalls[0].args assert "--system-site-packages" not in map(str, args) assert "--no-site-packages" not in map(str, args)
def test_install_sdist_extras(newmocksession): mocksession = newmocksession([], """ [testenv] extras = testing development """) venv = mocksession.getenv('python') action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 pcalls[:] = [] venv.installpkg('distfile.tar.gz', action=action) assert 'distfile.tar.gz[testing,development]' in pcalls[-1].args
def test_develop_extras(newmocksession, tmpdir): mocksession = newmocksession([], """ [testenv] extras = testing development """) venv = mocksession.getenv('python') action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 pcalls[:] = [] venv.developpkg(tmpdir, action=action) expected = "%s[testing,development]" % tmpdir.strpath assert expected in pcalls[-1].args
def test_install_sdist_extras(newmocksession): mocksession = newmocksession( [], """\ [testenv] extras = testing development """, ) venv = mocksession.getvenv("python") with mocksession.newaction(venv.name, "getenv") as action: tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 pcalls[:] = [] venv.installpkg("distfile.tar.gz", action=action) assert "distfile.tar.gz[testing,development]" in pcalls[-1].args
def test_install_deps_pre(newmocksession): mocksession = newmocksession([], """ [testenv] pip_pre=true deps= dep1 """) venv = mocksession.getenv('python') action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 pcalls[:] = [] tox_testenv_install_deps(action=action, venv=venv) assert len(pcalls) == 1 args = " ".join(pcalls[0].args) assert "--pre " in args assert "dep1" in args
def test_develop_extras(newmocksession, tmpdir): mocksession = newmocksession( [], """\ [testenv] extras = testing development """, ) venv = mocksession.getvenv("python") with mocksession.newaction(venv.name, "getenv") as action: tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) == 1 pcalls[:] = [] venv.developpkg(tmpdir, action=action) expected = "{}[testing,development]".format(tmpdir.strpath) assert expected in pcalls[-1].args
def test_create_download(mocksession, newconfig, download): config = newconfig( [], """\ [testenv:env] {} """.format("download={}".format(download) if download else ""), ) mocksession.new_config(config) venv = mocksession.getvenv("env") with mocksession.newaction(venv.name, "getenv") as action: tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) >= 1 args = pcalls[0].args if download is True: assert "--no-download" not in map(str, args) else: assert "--no-download" in map(str, args) mocksession._clearmocks()
def test_create(monkeypatch, mocksession, newconfig): config = newconfig([], """ [testenv:py123] """) envconfig = config.envconfigs['py123'] venv = VirtualEnv(envconfig, session=mocksession) assert venv.path == envconfig.envdir assert not venv.path.check() action = mocksession.newaction(venv, "getenv") tox_testenv_create(action=action, venv=venv) pcalls = mocksession._pcalls assert len(pcalls) >= 1 args = pcalls[0].args assert "virtualenv" == str(args[2]) if sys.platform != "win32": # realpath is needed for stuff like the debian symlinks assert py.path.local(sys.executable).realpath() == py.path.local(args[0]).realpath() # assert Envconfig.toxworkdir in args assert venv.getcommandpath("easy_install", cwd=py.path.local()) interp = venv._getliveconfig().python assert interp == venv.envconfig.python_info.executable assert venv.path_config.check(exists=False)
def test_install_deps_pre(newmocksession): mocksession = newmocksession( [], """\ [testenv] pip_pre=true deps= dep1 """, ) venv = mocksession.getvenv("python") with mocksession.newaction(venv.name, "getenv") as action: tox_testenv_create(action=action, venv=venv) venv.just_created = True pcalls = mocksession._pcalls assert len(pcalls) == 1 pcalls[:] = [] tox_testenv_install_deps(action=action, venv=venv) assert len(pcalls) == 1 args = " ".join(pcalls[0].args) assert "--pre " in args assert "dep1" in args