diff --git a/.travis.yml b/.travis.yml index b5dba342fb3..9e006eaa03e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,7 +30,6 @@ matrix: python: nightly allow_failures: - python: nightly - - python: pypy3 install: travis_retry .travis/install.sh script: .travis/run.sh diff --git a/tests/lib/__init__.py b/tests/lib/__init__.py index 8d5b2474716..315bd52eb26 100644 --- a/tests/lib/__init__.py +++ b/tests/lib/__init__.py @@ -9,6 +9,7 @@ import shutil import scripttest +import six import virtualenv from tests.lib.path import Path, curdir @@ -35,6 +36,15 @@ def path_to_url(path): return 'file://' + url +# workaround for https://github.com/pypa/virtualenv/issues/306 +def virtualenv_lib_path(venv_home, venv_lib): + if not hasattr(sys, "pypy_version_info"): + return venv_lib + version_fmt = '{0}' if six.PY3 else '{0}.{1}' + version_dir = version_fmt.format(*sys.version_info) + return os.path.join(venv_home, 'lib-python', version_dir) + + def create_file(path, contents=None): """Create a file on the path, with the given contents """ @@ -262,11 +272,8 @@ def __init__(self, base_path, *args, **kwargs): path_locations = virtualenv.path_locations(_virtualenv) # Make sure we have test.lib.path.Path objects venv, lib, include, bin = map(Path, path_locations) - # workaround for https://github.com/pypa/virtualenv/issues/306 - if hasattr(sys, "pypy_version_info"): - lib = os.path.join(venv, 'lib-python', pyversion) self.venv_path = venv - self.lib_path = lib + self.lib_path = virtualenv_lib_path(venv, lib) self.include_path = include self.bin_path = bin diff --git a/tests/lib/venv.py b/tests/lib/venv.py index 47e79d7a670..55f67739e65 100644 --- a/tests/lib/venv.py +++ b/tests/lib/venv.py @@ -2,10 +2,10 @@ import os import subprocess -import sys import virtualenv as _virtualenv +from . import virtualenv_lib_path from .path import Path # On Python < 3.3 we don't have subprocess.DEVNULL @@ -27,10 +27,7 @@ def __init__(self, location, *args, **kwargs): self._system_site_packages = kwargs.pop("system_site_packages", False) home, lib, inc, bin = _virtualenv.path_locations(self.location) - # workaround for https://github.com/pypa/virtualenv/issues/306 - if hasattr(sys, "pypy_version_info"): - lib = os.path.join(home, 'lib-python', sys.version[:3]) - self.lib = Path(lib) + self.lib = Path(virtualenv_lib_path(home, lib)) self.bin = Path(bin) super(VirtualEnvironment, self).__init__(*args, **kwargs)