diff --git a/tests/test_virtualenv.py b/tests/test_virtualenv.py index 620c0cb..3284cea 100644 --- a/tests/test_virtualenv.py +++ b/tests/test_virtualenv.py @@ -5,6 +5,7 @@ import optparse import os import shutil import subprocess +import platform import sys import tempfile import textwrap @@ -342,6 +343,11 @@ def test_install_python_bin(): if virtualenv.IS_WIN: required_executables = ["python.exe", "pythonw.exe"] + elif platform.python_implementation() == 'PyPy': + if sys.version_info.major < 3: + required_executables = ["pypy"] + else: + required_executables = ["pypy3"] else: py_exe_no_version = "python" py_exe_version_major = "python%s" % sys.version_info[0] @@ -549,7 +555,7 @@ def check_pypy_pre_import(): assert module in sys.modules, "missing {!r} in sys.modules".format(module) -@pytest.mark.skipif("platform.python_implementation() != 'PyPy'") +@pytest.mark.skipif("platform.python_implementation() == 'PyPy'") def test_pypy_pre_import(tmp_path): """For PyPy, some built-in modules should be pre-imported because some programs expect them to be in sys.modules on startup. @@ -622,7 +628,7 @@ def test_create_environment_from_venv(tmpdir): builder.setup_python(ctx) builder.setup_scripts(ctx) subprocess.check_call([ctx.env_exe, virtualenv.__file__, "--no-setuptools", "--no-pip", "--no-wheel", ve_venv_dir]) - ve_exe = os.path.join(bin_dir, "python") + ve_exe = os.path.join(bin_dir, os.getenv('EPYTHON')) out = subprocess.check_output([ve_exe, "-c", "import sys; print(sys.real_prefix)"], universal_newlines=True) # Test against real_prefix if present - we might be running the test from a virtualenv (e.g. tox). assert out.strip() == getattr(sys, "real_prefix", sys.prefix) @@ -639,7 +645,7 @@ def test_create_environment_from_venv_no_pip(tmpdir): builder.setup_python(ctx) builder.setup_scripts(ctx) subprocess.check_call([ctx.env_exe, virtualenv.__file__, "--no-pip", ve_venv_dir]) - ve_exe = os.path.join(bin_dir, "python") + ve_exe = os.path.join(bin_dir, os.getenv('EPYTHON')) out = subprocess.check_output([ve_exe, "-c", "import sys; print(sys.real_prefix)"], universal_newlines=True) # Test against real_prefix if present - we might be running the test from a virtualenv (e.g. tox). assert out.strip() == getattr(sys, "real_prefix", sys.prefix) @@ -657,10 +663,11 @@ def test_create_environment_with_old_pip(tmpdir): virtualenv.create_environment(venvdir, search_dirs=[support_dir], no_wheel=True) +@pytest.mark.skipif("platform.python_implementation() == 'PyPy'") def test_license_builtin(clean_python): _, bin_dir, _ = clean_python proc = subprocess.Popen( - (os.path.join(bin_dir, "python"), "-c", "license()"), stdin=subprocess.PIPE, stdout=subprocess.PIPE + (os.path.join(bin_dir, os.getenv('EPYTHON')), "-c", "license()"), stdin=subprocess.PIPE, stdout=subprocess.PIPE ) out_b, _ = proc.communicate(b"q\n") out = out_b.decode()