예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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')
예제 #8
0
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
예제 #9
0
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)
예제 #10
0
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
예제 #11
0
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
예제 #12
0
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
예제 #13
0
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
예제 #14
0
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
예제 #15
0
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()
예제 #16
0
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)
예제 #17
0
파일: test_venv.py 프로젝트: jdufresne/tox
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