Skip all failing tests when using venv

Our isolation logic for venv isn't correct and that is causing these
tests to fail. The culprits for this are:

  tests/lib/venv.py::VirtualEnvironment.user_site_packages
  tests/lib/venv.py::VirtualEnvironment.sitecustomize

Both these together are supposed to create an environment to isolate the
tests. However, they were written for virtualenv and make assumptions
that are not true for environments created with venv. Until we can fix
VirtualEnvironment to properly isolate the test from the underlying test
environment when using venv, these tests will continue to fail.

This is blocking an important bugfix for users facing issues with since
pip is installing packages into `--user` when run in a venv, even when
`--user` isn't visible from that environment.

As a temporary band-aid for this problem, I'm skipping these tests to
unblock us from shipping the bugfix for the aforementioned issue.

The test isolation logic should be fixed to work for venv. Once such a
fix is made, this commit should be reverted.
This commit is contained in:
Pradyun Gedam 2019-11-05 21:05:08 +05:30
parent 57d34e0d9b
commit 8981895b5e
No known key found for this signature in database
GPG Key ID: DA17C4B29CB32E4B
8 changed files with 19 additions and 1 deletions

View File

@ -703,6 +703,7 @@ def test_freeze_with_requirement_option_package_repeated_multi_file(script):
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_freeze_user(script, virtualenv, data):
"""
Testing freeze with --user, first we have to install some stuff.
@ -733,6 +734,7 @@ def test_freeze_path(tmpdir, script, data):
_check_output(result.stdout, expected)
@pytest.mark.incompatible_with_test_venv
def test_freeze_path_exclude_user(tmpdir, script, data):
"""
Test freeze with --path and make sure packages from --user are not picked

View File

@ -124,6 +124,7 @@ def test_pep518_allows_missing_requires(script, data, common_wheels):
assert result.files_created
@pytest.mark.incompatible_with_test_venv
def test_pep518_with_user_pip(script, pip_src, data, common_wheels):
"""
Check that build dependencies are installed into the build
@ -1593,6 +1594,7 @@ def test_target_install_ignores_distutils_config_install_prefix(script):
assert relative_script_base not in result.files_created
@pytest.mark.incompatible_with_test_venv
def test_user_config_accepted(script):
# user set in the config file is parsed as 0/1 instead of True/False.
# Check that this doesn't cause a problem.

View File

@ -227,6 +227,7 @@ def test_install_local_with_subdirectory(script):
result.assert_installed('version_subpkg.py', editable=False)
@pytest.mark.incompatible_with_test_venv
def test_wheel_user_with_prefix_in_pydistutils_cfg(
script, data, with_wheel):
if os.name == 'posix':

View File

@ -27,6 +27,7 @@ def _patch_dist_in_site_packages(virtualenv):
class Tests_UserSite:
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_reset_env_system_site_packages_usersite(self, script):
"""
Check user site works as expected.
@ -42,6 +43,7 @@ class Tests_UserSite:
@pytest.mark.network
@need_svn
@pytest.mark.incompatible_with_test_venv
def test_install_subversion_usersite_editable_with_distribute(
self, script, tmpdir):
"""
@ -55,6 +57,7 @@ class Tests_UserSite:
)
result.assert_installed('INITools', use_user_site=True)
@pytest.mark.incompatible_with_test_venv
def test_install_from_current_directory_into_usersite(
self, script, data, with_wheel):
"""
@ -75,7 +78,6 @@ class Tests_UserSite:
)
assert dist_info_folder in result.files_created
@pytest.mark.incompatible_with_test_venv
def test_install_user_venv_nositepkgs_fails(self, virtualenv,
script, data):
"""
@ -96,6 +98,7 @@ class Tests_UserSite:
)
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_install_user_conflict_in_usersite(self, script):
"""
Test user install with conflict in usersite updates usersite.
@ -119,6 +122,7 @@ class Tests_UserSite:
assert not isfile(initools_v3_file), initools_v3_file
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_install_user_conflict_in_globalsite(self, virtualenv, script):
"""
Test user install with conflict in global site ignores site and
@ -149,6 +153,7 @@ class Tests_UserSite:
assert isdir(initools_folder)
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_upgrade_user_conflict_in_globalsite(self, virtualenv, script):
"""
Test user install/upgrade with conflict in global site ignores site and
@ -178,6 +183,7 @@ class Tests_UserSite:
assert isdir(initools_folder)
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_install_user_conflict_in_globalsite_and_usersite(
self, virtualenv, script):
"""
@ -214,6 +220,7 @@ class Tests_UserSite:
assert isdir(initools_folder)
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_install_user_in_global_virtualenv_with_conflict_fails(
self, script):
"""

View File

@ -233,6 +233,7 @@ def test_wheel_record_lines_in_deterministic_order(script, data):
assert record_lines == sorted(record_lines)
@pytest.mark.incompatible_with_test_venv
def test_install_user_wheel(script, data, with_wheel):
"""
Test user install from wheel (that has a script)

View File

@ -94,6 +94,7 @@ def test_local_columns_flag(simple_script):
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_user_flag(script, data):
"""
Test the behavior of --user flag in the list command
@ -110,6 +111,7 @@ def test_user_flag(script, data):
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_user_columns_flag(script, data):
"""
Test the behavior of --user --format=columns flags in the list command
@ -502,6 +504,7 @@ def test_list_path(tmpdir, script, data):
assert {'name': 'simple', 'version': '2.0'} in json_result
@pytest.mark.incompatible_with_test_venv
def test_list_path_exclude_user(tmpdir, script, data):
"""
Test list with --path and make sure packages from --user are not picked

View File

@ -9,6 +9,7 @@ from tests.functional.test_install_user import _patch_dist_in_site_packages
from tests.lib import assert_all_changes, pyversion
@pytest.mark.incompatible_with_test_venv
class Tests_UninstallUserSite:
@pytest.mark.network

View File

@ -162,6 +162,7 @@ def test_build_env_overlay_prefix_has_priority(script):
assert result.stdout.strip() == '2.0', str(result)
@pytest.mark.incompatible_with_test_venv
def test_build_env_isolation(script):
# Create dummy `pkg` wheel.