Many test failures on master (macOS, Framework Python 3.8)
See original GitHub issueEnvironment
- pip version: bf0da0fe
- Python version: 3.8.1 (Framework build as installed from python.org)
- OS: macOS 10.15.3
Description
Running the test suite on a clean checkout (tox
with TOXENV=python
), 16 tests fail consistently.
Expected behavior
Test suite should pass on popular operating systems.
Output
pip master $ tox
GLOB sdist-make: /Users/jaraco/code/public/pypa/pip/setup.py
python inst-nodeps: /Users/jaraco/code/public/pypa/pip/.tox/.tmp/package/1/pip-20.1.dev0.zip
python installed: apipkg==1.5,atomicwrites==1.3.0,attrs==19.3.0,cffi==1.14.0,coverage==5.0.3,cryptography==2.8,csv23==0.1.6,execnet==1.7.1,freezegun==0.3.15,mock==4.0.1,more-itertools==8.2.0,pip==20.1.dev0,pluggy==0.13.1,pretend==1.0.9,py==1.8.1,pycparser==2.19,pytest==3.8.2,pytest-cov==2.8.1,pytest-forked==1.1.3,pytest-rerunfailures==6.0,pytest-timeout==1.3.4,pytest-xdist==1.27.0,python-dateutil==2.8.1,PyYAML==5.3,scripttest==1.3,setuptools==41.2.0,six==1.14.0,virtualenv==16.7.10,Werkzeug==0.16.0,wheel==0.34.2
python run-test-pre: PYTHONHASHSEED='1967842165'
python run-test-pre: commands[0] | python -c 'import shutil, sys; shutil.rmtree(sys.argv[1], ignore_errors=True)' /Users/jaraco/code/public/pypa/pip/tests/data/common_wheels
python run-test-pre: commands[1] | python /Users/jaraco/code/public/pypa/pip/tools/tox_pip.py wheel -w /Users/jaraco/code/public/pypa/pip/tests/data/common_wheels -r /Users/jaraco/code/public/pypa/pip/tools/requirements/tests-common_wheels.txt
Collecting setuptools>=40.8.0
Using cached setuptools-45.2.0-py3-none-any.whl (584 kB)
Saved ./tests/data/common_wheels/setuptools-45.2.0-py3-none-any.whl
Collecting wheel
Using cached wheel-0.34.2-py2.py3-none-any.whl (26 kB)
Saved ./tests/data/common_wheels/wheel-0.34.2-py2.py3-none-any.whl
Skipping setuptools, due to already being wheel.
Skipping wheel, due to already being wheel.
python run-test: commands[0] | pytest --timeout 300
========================================================================== test session starts ===========================================================================
platform darwin -- Python 3.8.1, pytest-3.8.2, py-1.8.1, pluggy-0.13.1
rootdir: /Users/jaraco/code/public/pypa/pip, inifile: setup.cfg
plugins: timeout-1.3.4, rerunfailures-6.0, forked-1.1.3, cov-2.8.1, xdist-1.27.0
timeout: 300.0s
timeout method: signal
timeout func_only: False
collected 1833 items
tests/functional/test_broken_stdout.py ... [ 0%]
tests/functional/test_check.py .......... [ 0%]
tests/functional/test_cli.py ... [ 0%]
tests/functional/test_completion.py ..................... [ 2%]
tests/functional/test_configuration.py .s... [ 2%]
tests/functional/test_debug.py ............. [ 3%]
tests/functional/test_download.py ...................................... [ 5%]
tests/functional/test_freeze.py .....Fx................. [ 6%]
tests/functional/test_hash.py ... [ 6%]
tests/functional/test_help.py ....... [ 6%]
tests/functional/test_install.py .......................F........................s.............................................................F........ [ 13%]
tests/functional/test_install_check.py .. [ 13%]
tests/functional/test_install_cleanup.py ......... [ 14%]
tests/functional/test_install_compat.py .. [ 14%]
tests/functional/test_install_config.py ........ [ 14%]
tests/functional/test_install_extras.py ....... [ 14%]
tests/functional/test_install_force_reinstall.py .. [ 15%]
tests/functional/test_install_index.py .... [ 15%]
tests/functional/test_install_reqs.py ........F..........................x... [ 17%]
tests/functional/test_install_upgrade.py ................... [ 18%]
tests/functional/test_install_user.py .FF.FFFF. [ 18%]
tests/functional/test_install_vcs_git.py ........................ [ 20%]
tests/functional/test_install_wheel.py .............F................ [ 21%]
tests/functional/test_list.py ............................ [ 23%]
tests/functional/test_no_color.py s [ 23%]
tests/functional/test_pep517.py ............. [ 24%]
tests/functional/test_requests.py s [ 24%]
tests/functional/test_search.py ...s....... [ 24%]
tests/functional/test_show.py .................... [ 25%]
tests/functional/test_uninstall.py .............F.F........ [ 27%]
tests/functional/test_uninstall_user.py FFF [ 27%]
tests/functional/test_vcs_bazaar.py s.. [ 27%]
tests/functional/test_vcs_git.py ........... [ 28%]
tests/functional/test_vcs_mercurial.py . [ 28%]
tests/functional/test_warning.py ....ss [ 28%]
tests/functional/test_wheel.py .................... [ 29%]
tests/functional/test_yaml.py xx...........x [ 30%]
tests/lib/test_lib.py .................... [ 31%]
tests/lib/test_wheel.py ................. [ 32%]
tests/unit/test_appdirs.py ................. [ 33%]
tests/unit/test_base_command.py ............ [ 33%]
tests/unit/test_build_env.py ..... [ 34%]
tests/unit/test_cache.py ...... [ 34%]
tests/unit/test_check.py .. [ 34%]
tests/unit/test_cmdoptions.py ........... [ 35%]
tests/unit/test_collector.py ...........................................s............s.s................... [ 39%]
tests/unit/test_command_install.py ............... [ 40%]
tests/unit/test_commands.py .................................. [ 42%]
tests/unit/test_compat.py .................. [ 43%]
tests/unit/test_configuration.py ...................... [ 44%]
tests/unit/test_finder.py ............................... [ 46%]
tests/unit/test_format_control.py ......... [ 46%]
tests/unit/test_index.py .................................................................................................... [ 52%]
tests/unit/test_link.py .................................. [ 53%]
tests/unit/test_locations.py .ss [ 54%]
tests/unit/test_logging.py ............. [ 54%]
tests/unit/test_models.py ..... [ 55%]
tests/unit/test_models_wheel.py ................. [ 55%]
tests/unit/test_network_auth.py ................... [ 57%]
tests/unit/test_network_cache.py ..... [ 57%]
tests/unit/test_network_download.py ................... [ 58%]
tests/unit/test_network_session.py ............................. [ 59%]
tests/unit/test_operations_prepare.py ........... [ 60%]
tests/unit/test_options.py ........................................................... [ 63%]
tests/unit/test_packaging.py .... [ 63%]
tests/unit/test_pep425tags.py ........... [ 64%]
tests/unit/test_pep517.py ....... [ 64%]
tests/unit/test_req.py .................................................sss....... [ 68%]
tests/unit/test_req_file.py ............................................................. [ 71%]
tests/unit/test_req_install.py ..... [ 71%]
tests/unit/test_req_uninstall.py ............. [ 72%]
tests/unit/test_resolution_legacy_resolver.py ....... [ 72%]
tests/unit/test_search_scope.py .. [ 72%]
tests/unit/test_self_check_outdated.py ................ [ 73%]
tests/unit/test_target_python.py ................... [ 74%]
tests/unit/test_urls.py .....s........s [ 75%]
tests/unit/test_utils.py ......................................................................................................................................... [ 83%]
........... [ 83%]
tests/unit/test_utils_distutils_args.py ................. [ 84%]
tests/unit/test_utils_filesystem.py ....... [ 85%]
tests/unit/test_utils_pkg_resources.py .. [ 85%]
tests/unit/test_utils_subprocess.py ......ss............. [ 86%]
tests/unit/test_utils_temp_dir.py ..................................... [ 88%]
tests/unit/test_utils_unpacking.py ........... [ 88%]
tests/unit/test_utils_virtualenv.py ..................... [ 90%]
tests/unit/test_utils_wheel.py ............ [ 90%]
tests/unit/test_vcs.py s................................................................................................. [ 96%]
tests/unit/test_vcs_mercurial.py . [ 96%]
tests/unit/test_wheel.py ....................................... [ 98%]
tests/unit/test_wheel_builder.py ................................ [100%]
================================================================================ FAILURES ================================================================================
____________________________________________________________________________ test_freeze_svn _____________________________________________________________________________
script = <tests.lib.PipTestEnvironment object at 0x110f42af0>
tmpdir = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_freeze_svn0')
@need_svn
def test_freeze_svn(script, tmpdir):
"""Test freezing a svn checkout"""
> checkout_path = _create_test_package(script, vcs='svn')
tests/functional/test_freeze.py:178:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/lib/__init__.py:869: in _create_test_package
return _vcs_add(script, version_pkg_path, vcs)
tests/lib/__init__.py:771: in _vcs_add
repo_url = _create_svn_repo(script, version_pkg_path)
tests/lib/__init__.py:875: in _create_svn_repo
script.run(
tests/lib/__init__.py:591: in run
result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:854: in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x110f616d0>, args = ['svnadmin', 'create', 'pip-test-package-repo'], executable = b'svnadmin', preexec_fn = None, close_fds = True
pass_fds = (), cwd = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_freeze_svn0/workspace/scratch')
env = {'GIT_AUTHOR_EMAIL': 'pypa-dev@googlegroups.com', 'GIT_AUTHOR_NAME': 'pip', 'GIT_CONFIG_NOSYSTEM': '1', 'HOME': '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_freeze_svn0/home', ...}
startupinfo = None, creationflags = 0, shell = False, p2cread = 9, p2cwrite = 12, c2pread = 13, c2pwrite = 14, errread = 15, errwrite = 16, restore_signals = True
start_new_session = False
def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""
if isinstance(args, (str, bytes)):
args = [args]
elif isinstance(args, os.PathLike):
if shell:
raise TypeError('path-like args is not allowed when '
'shell is true')
args = [args]
else:
args = list(args)
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
args = [unix_shell, "-c"] + args
if executable:
args[0] = executable
if executable is None:
executable = args[0]
sys.audit("subprocess.Popen", executable, args, cwd, env)
if (_USE_POSIX_SPAWN
and os.path.dirname(executable)
and preexec_fn is None
and not close_fds
and not pass_fds
and cwd is None
and (p2cread == -1 or p2cread > 2)
and (c2pwrite == -1 or c2pwrite > 2)
and (errwrite == -1 or errwrite > 2)
and not start_new_session):
self._posix_spawn(args, executable, env, restore_signals,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
return
orig_executable = executable
# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()
if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)
self._close_pipe_fds(p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)
if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass
try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: 'svnadmin'
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:1702: FileNotFoundError
__________________________________________________________________ test_basic_install_editable_from_svn __________________________________________________________________
script = <tests.lib.PipTestEnvironment object at 0x110a24c70>
@need_svn
def test_basic_install_editable_from_svn(script):
"""
Test checking out from svn.
"""
checkout_path = _create_test_package(script)
> repo_url = _create_svn_repo(script, checkout_path)
tests/functional/test_install.py:273:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/lib/__init__.py:875: in _create_svn_repo
script.run(
tests/lib/__init__.py:591: in run
result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:854: in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x110c11f40>, args = ['svnadmin', 'create', 'pip-test-package-repo'], executable = b'svnadmin', preexec_fn = None, close_fds = True
pass_fds = (), cwd = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_basic_install_editable_fr0/workspace/scratch')
env = {'GIT_AUTHOR_EMAIL': 'pypa-dev@googlegroups.com', 'GIT_AUTHOR_NAME': 'pip', 'GIT_CONFIG_NOSYSTEM': '1', 'HOME': '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_basic_install_editable_fr0/home', ...}
startupinfo = None, creationflags = 0, shell = False, p2cread = 9, p2cwrite = 12, c2pread = 13, c2pwrite = 14, errread = 15, errwrite = 16, restore_signals = True
start_new_session = False
def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""
if isinstance(args, (str, bytes)):
args = [args]
elif isinstance(args, os.PathLike):
if shell:
raise TypeError('path-like args is not allowed when '
'shell is true')
args = [args]
else:
args = list(args)
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
args = [unix_shell, "-c"] + args
if executable:
args[0] = executable
if executable is None:
executable = args[0]
sys.audit("subprocess.Popen", executable, args, cwd, env)
if (_USE_POSIX_SPAWN
and os.path.dirname(executable)
and preexec_fn is None
and not close_fds
and not pass_fds
and cwd is None
and (p2cread == -1 or p2cread > 2)
and (c2pwrite == -1 or c2pwrite > 2)
and (errwrite == -1 or errwrite > 2)
and not start_new_session):
self._posix_spawn(args, executable, env, restore_signals,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
return
orig_executable = executable
# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()
if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)
self._close_pipe_fds(p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)
if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass
try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: 'svnadmin'
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:1702: FileNotFoundError
_______________________________________________________________________ test_user_config_accepted ________________________________________________________________________
script = <tests.lib.PipTestEnvironment object at 0x110cd5850>
@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.
config_file = script.scratch_path / 'pip.conf'
script.environ['PIP_CONFIG_FILE'] = str(config_file)
config_file.write_text("[install]\nuser = true")
result = script.pip_install_local('simplewheel')
assert "Successfully installed simplewheel" in result.stdout
relative_user = os.path.relpath(script.user_site_path, script.base_path)
> assert join(relative_user, 'simplewheel') in result.files_created
E AssertionError: assert 'venv/user/lib/python/site-packages/simplewheel' in {'venv/user/lib/python3.8': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest...pytest-19/test_user_config_accepted0/workspace:venv/user/lib/python3.8/site-packages/simplewheel-2.0-1.dist-info>, ...}
E + where 'venv/user/lib/python/site-packages/simplewheel' = join('venv/user/lib/python/site-packages', 'simplewheel')
E + and {'venv/user/lib/python3.8': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest...pytest-19/test_user_config_accepted0/workspace:venv/user/lib/python3.8/site-packages/simplewheel-2.0-1.dist-info>, ...} = <tests.lib.TestPipResult object at 0x110c1f820>.files_created
tests/functional/test_install.py:1692: AssertionError
____________________________________________________________________ test_multiple_requirements_files ____________________________________________________________________
script = <tests.lib.PipTestEnvironment object at 0x110d4d550>
tmpdir = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_multiple_requirements_fil0')
@pytest.mark.network
@need_svn
def test_multiple_requirements_files(script, tmpdir):
"""
Test installing from multiple nested requirements files.
"""
other_lib_name, other_lib_version = 'anyjson', '0.3'
script.scratch_path.joinpath("initools-req.txt").write_text(
textwrap.dedent("""
-e %s@10#egg=INITools
-r %s-req.txt
""") %
(
> local_checkout('svn+http://svn.colorstudy.com/INITools', tmpdir),
other_lib_name
),
)
tests/functional/test_install_reqs.py:127:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/lib/local_repos.py:63: in local_checkout
_create_svn_initools_repo(repo_url_path)
tests/lib/local_repos.py:22: in _create_svn_initools_repo
subprocess.check_call('svnadmin create INITools'.split(), cwd=directory)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:359: in check_call
retcode = call(*popenargs, **kwargs)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:340: in call
with Popen(*popenargs, **kwargs) as p:
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:854: in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x110d4d4c0>, args = ['svnadmin', 'create', 'INITools'], executable = b'svnadmin', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_multiple_requirements_fil0/cache', env = None, startupinfo = None
creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1, errwrite = -1, restore_signals = True, start_new_session = False
def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""
if isinstance(args, (str, bytes)):
args = [args]
elif isinstance(args, os.PathLike):
if shell:
raise TypeError('path-like args is not allowed when '
'shell is true')
args = [args]
else:
args = list(args)
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
args = [unix_shell, "-c"] + args
if executable:
args[0] = executable
if executable is None:
executable = args[0]
sys.audit("subprocess.Popen", executable, args, cwd, env)
if (_USE_POSIX_SPAWN
and os.path.dirname(executable)
and preexec_fn is None
and not close_fds
and not pass_fds
and cwd is None
and (p2cread == -1 or p2cread > 2)
and (c2pwrite == -1 or c2pwrite > 2)
and (errwrite == -1 or errwrite > 2)
and not start_new_session):
self._posix_spawn(args, executable, env, restore_signals,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
return
orig_executable = executable
# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()
if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)
self._close_pipe_fds(p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)
if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass
try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: 'svnadmin'
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:1702: FileNotFoundError
________________________________________________ Tests_UserSite.test_install_subversion_usersite_editable_with_distribute ________________________________________________
self = <tests.functional.test_install_user.Tests_UserSite object at 0x111895610>, script = <tests.lib.PipTestEnvironment object at 0x1118892b0>
tmpdir = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_subversion_usersi0')
@pytest.mark.network
@need_svn
@pytest.mark.incompatible_with_test_venv
def test_install_subversion_usersite_editable_with_distribute(
self, script, tmpdir):
"""
Test installing current directory ('.') into usersite after installing
distribute
"""
result = script.pip(
'install', '--user', '-e',
'%s#egg=initools' %
> local_checkout('svn+http://svn.colorstudy.com/INITools', tmpdir)
)
tests/functional/test_install_user.py:56:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/lib/local_repos.py:63: in local_checkout
_create_svn_initools_repo(repo_url_path)
tests/lib/local_repos.py:22: in _create_svn_initools_repo
subprocess.check_call('svnadmin create INITools'.split(), cwd=directory)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:359: in check_call
retcode = call(*popenargs, **kwargs)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:340: in call
with Popen(*popenargs, **kwargs) as p:
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:854: in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x111889550>, args = ['svnadmin', 'create', 'INITools'], executable = b'svnadmin', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_subversion_usersi0/cache', env = None, startupinfo = None
creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1, errwrite = -1, restore_signals = True, start_new_session = False
def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""
if isinstance(args, (str, bytes)):
args = [args]
elif isinstance(args, os.PathLike):
if shell:
raise TypeError('path-like args is not allowed when '
'shell is true')
args = [args]
else:
args = list(args)
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
args = [unix_shell, "-c"] + args
if executable:
args[0] = executable
if executable is None:
executable = args[0]
sys.audit("subprocess.Popen", executable, args, cwd, env)
if (_USE_POSIX_SPAWN
and os.path.dirname(executable)
and preexec_fn is None
and not close_fds
and not pass_fds
and cwd is None
and (p2cread == -1 or p2cread > 2)
and (c2pwrite == -1 or c2pwrite > 2)
and (errwrite == -1 or errwrite > 2)
and not start_new_session):
self._posix_spawn(args, executable, env, restore_signals,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
return
orig_executable = executable
# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()
if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)
self._close_pipe_fds(p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)
if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass
try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: 'svnadmin'
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:1702: FileNotFoundError
____________________________________________________ Tests_UserSite.test_install_from_current_directory_into_usersite ____________________________________________________
self = <tests.functional.test_install_user.Tests_UserSite object at 0x1118e1280>, script = <tests.lib.PipTestEnvironment object at 0x1118b1280>
data = <tests.lib.TestData object at 0x1118b11f0>, with_wheel = None
@pytest.mark.incompatible_with_test_venv
def test_install_from_current_directory_into_usersite(
self, script, data, with_wheel):
"""
Test installing current directory ('.') into usersite
"""
run_from = data.packages.joinpath("FSPkg")
result = script.pip(
'install', '-vvv', '--user', curdir,
cwd=run_from,
)
fspkg_folder = script.user_site / 'fspkg'
> assert fspkg_folder in result.files_created, result.stdout
E AssertionError: User install by explicit request
E Created temporary directory: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-ephem-wheel-cache-hs30cvxo
E Created temporary directory: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-tracker-ykkzr6k1
E Initialized build tracking at /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-tracker-ykkzr6k1
E Created build tracker: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-tracker-ykkzr6k1
E Entered build tracker: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-tracker-ykkzr6k1
E Created temporary directory: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-install-3m98e45c
E Processing /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/data/packages/FSPkg
E Created temporary directory: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-build-drdhrnvi
E Added file:///private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/data/packages/FSPkg to build tracker '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-tracker-ykkzr6k1'
E Running setup.py (path:/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-build-drdhrnvi/setup.py) egg_info for package from file:///private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/data/packages/FSPkg
E Source in /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-build-drdhrnvi has version 0.1.dev0, which satisfies requirement FSPkg==0.1.dev0 from file:///private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/data/packages/FSPkg
E Removed FSPkg==0.1.dev0 from file:///private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/data/packages/FSPkg from build tracker '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-tracker-ykkzr6k1'
E Building wheels for collected packages: FSPkg
E Created temporary directory: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-wheel-fdhu41pb
E Building wheel for FSPkg (setup.py): started
E Destination directory: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-wheel-fdhu41pb
E Building wheel for FSPkg (setup.py): finished with status 'done'
E Created wheel for FSPkg: filename=FSPkg-0.1.dev0-py3-none-any.whl size=1459 sha256=b00fac4a46c4d0b8b2520a000f01c47face626108721389b43724ab12804676f
E Stored in directory: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-ephem-wheel-cache-hs30cvxo/wheels/91/3c/19/511ea121c22cba8261806be6173df523435d3646b9832c2d81
E Successfully built FSPkg
E Installing collected packages: FSPkg
E Created temporary directory: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-unpacked-wheel-yaqpheoo
E
E Successfully installed FSPkg-0.1.dev0
E Removed build tracker: '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_from_current_dire0/workspace/tmp/pip-req-tracker-ykkzr6k1'
E
E assert Path('venv/user/lib/python/site-packages/fspkg') in {'venv/user/lib/python3.8': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest...st_install_from_current_dire0/workspace:venv/user/lib/python3.8/site-packages/FSPkg-0.1.dev0.dist-info/INSTALLER>, ...}
E + where {'venv/user/lib/python3.8': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest...st_install_from_current_dire0/workspace:venv/user/lib/python3.8/site-packages/FSPkg-0.1.dev0.dist-info/INSTALLER>, ...} = <tests.lib.TestPipResult object at 0x1118e1190>.files_created
tests/functional/test_install_user.py:73: AssertionError
_________________________________________________________ Tests_UserSite.test_install_user_conflict_in_usersite __________________________________________________________
self = <tests.functional.test_install_user.Tests_UserSite object at 0x1118dcf70>, script = <tests.lib.PipTestEnvironment object at 0x1118dcbe0>
@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.
"""
script.pip('install', '--user', 'INITools==0.3', '--no-binary=:all:')
result2 = script.pip(
'install', '--user', 'INITools==0.1', '--no-binary=:all:')
# usersite has 0.1
egg_info_folder = (
script.user_site / 'INITools-0.1-py%s.egg-info' % pyversion
)
initools_v3_file = (
# file only in 0.3
script.base_path / script.user_site / 'initools' /
'configparser.py'
)
> assert egg_info_folder in result2.files_created, str(result2)
E AssertionError: Script result: python -m pip install --user INITools==0.1 --no-binary=:all:
E -- stdout: --------------------
E Collecting INITools==0.1
E Downloading INITools-0.1.tar.gz (16 kB)
E Could not build wheels for INITools,since package 'wheel' is not installed.
E Installing collected packages: INITools
E Attempting uninstall: INITools
E Found existing installation: INITools 0.3
E Uninstalling INITools-0.3:
E Successfully uninstalled INITools-0.3
E Running setup.py install for INITools: started
E Running setup.py install for INITools: finished with status 'done'
E Successfully installed INITools-0.1
E
E -- created: -------------------
E venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info
E PKG-INFO (532 bytes)
E SOURCES.txt (332 bytes)
E dependency_links.txt (1 bytes)
E installed-files.txt (593 bytes)
E top_level.txt (9 bytes)
E zip-safe (1 bytes)
E -- deleted: -------------------
E venv/user/lib/python3.8/site-packages/INITools-0.3-py3.8.egg-info
E PKG-INFO (721 bytes)
E SOURCES.txt (688 bytes)
E dependency_links.txt (1 bytes)
E installed-files.txt (747 bytes)
E top_level.txt (9 bytes)
E zip-safe (1 bytes)
E initools/_setmixin.py (2488 bytes)
E configparser.py (34600 bytes)
E -- updated: -------------------
E venv/user/lib/python3.8/site-packages
E initools
E __init__.py (2 bytes)
E configwrapper.py (8346 bytes)
E iniparser.py (7948 bytes)
E inischema.py (13365 bytes)
E lazyiniparser.py (5274 bytes)
E lazyloader.py (8381 bytes)
E nested.py (5262 bytes)
E assert 'venv/user/lib/python/site-packages/INITools-0.1-py3.8.egg-info' in {'venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2...r_conflict_in_0/workspace:venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info/dependency_links.txt>, ...}
E + where {'venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2...r_conflict_in_0/workspace:venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info/dependency_links.txt>, ...} = <tests.lib.TestPipResult object at 0x11186f6a0>.files_created
tests/functional/test_install_user.py:120: AssertionError
________________________________________________________ Tests_UserSite.test_install_user_conflict_in_globalsite _________________________________________________________
self = <tests.functional.test_install_user.Tests_UserSite object at 0x110ea29a0>
virtualenv = <VirtualEnvironment /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_user_conflict_in_0/workspace/venv>
script = <tests.lib.PipTestEnvironment object at 0x110db7bb0>
@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
installs to usersite
"""
_patch_dist_in_site_packages(virtualenv)
script.pip('install', 'INITools==0.2', '--no-binary=:all:')
result2 = script.pip(
'install', '--user', 'INITools==0.1', '--no-binary=:all:')
# usersite has 0.1
egg_info_folder = (
script.user_site / 'INITools-0.1-py%s.egg-info' % pyversion
)
initools_folder = script.user_site / 'initools'
> assert egg_info_folder in result2.files_created, str(result2)
E AssertionError: Script result: python -m pip install --user INITools==0.1 --no-binary=:all:
E -- stdout: --------------------
E Collecting INITools==0.1
E Downloading INITools-0.1.tar.gz (16 kB)
E Could not build wheels for INITools,since package 'wheel' is not installed.
E Installing collected packages: INITools
E Running setup.py install for INITools: started
E Running setup.py install for INITools: finished with status 'done'
E Successfully installed INITools-0.1
E
E -- created: -------------------
E venv/user/lib/python3.8
E site-packages
E INITools-0.1-py3.8.egg-info
E PKG-INFO (532 bytes)
E SOURCES.txt (332 bytes)
E dependency_links.txt (1 bytes)
E installed-files.txt (593 bytes)
E top_level.txt (9 bytes)
E zip-safe (1 bytes)
E initools
E __init__.py (2 bytes)
E configwrapper.py (8346 bytes)
E iniparser.py (7948 bytes)
E inischema.py (13365 bytes)
E lazyiniparser.py (5274 bytes)
E lazyloader.py (8381 bytes)
E nested.py (5262 bytes)
E -- updated: -------------------
E venv/user/lib
E assert 'venv/user/lib/python/site-packages/INITools-0.1-py3.8.egg-info' in {'venv/user/lib/python3.8': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest..._install_user_conflict_in_0/workspace:venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info/PKG-INFO>, ...}
E + where {'venv/user/lib/python3.8': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest..._install_user_conflict_in_0/workspace:venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info/PKG-INFO>, ...} = <tests.lib.TestPipResult object at 0x110ec8f40>.files_created
tests/functional/test_install_user.py:142: AssertionError
________________________________________________________ Tests_UserSite.test_upgrade_user_conflict_in_globalsite _________________________________________________________
self = <tests.functional.test_install_user.Tests_UserSite object at 0x1118dcf40>
virtualenv = <VirtualEnvironment /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_upgrade_user_conflict_in_0/workspace/venv>
script = <tests.lib.PipTestEnvironment object at 0x110ed8670>
@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
installs to usersite
"""
_patch_dist_in_site_packages(virtualenv)
script.pip('install', 'INITools==0.2', '--no-binary=:all:')
result2 = script.pip(
'install', '--user', '--upgrade', 'INITools', '--no-binary=:all:')
# usersite has 0.3.1
egg_info_folder = (
script.user_site / 'INITools-0.3.1-py%s.egg-info' % pyversion
)
initools_folder = script.user_site / 'initools'
> assert egg_info_folder in result2.files_created, str(result2)
E AssertionError: Script result: python -m pip install --user --upgrade INITools --no-binary=:all:
E -- stdout: --------------------
E Collecting INITools
E Downloading INITools-0.3.1.tar.gz (21 kB)
E Could not build wheels for INITools,since package 'wheel' is not installed.
E Installing collected packages: INITools
E Running setup.py install for INITools: started
E Running setup.py install for INITools: finished with status 'done'
E Successfully installed INITools-0.3.1
E
E -- created: -------------------
E venv/user/lib/python3.8
E site-packages
E INITools-0.3.1-py3.8.egg-info
E PKG-INFO (874 bytes)
E SOURCES.txt (379 bytes)
E dependency_links.txt (1 bytes)
E installed-files.txt (747 bytes)
E top_level.txt (9 bytes)
E zip-safe (1 bytes)
E initools
E __init__.py (2 bytes)
E _setmixin.py (2488 bytes)
E configparser.py (34580 bytes)
E configwrapper.py (8550 bytes)
E iniparser.py (8097 bytes)
E inischema.py (13460 bytes)
E lazyiniparser.py (5274 bytes)
E lazyloader.py (8574 bytes)
E nested.py (5451 bytes)
E -- updated: -------------------
E venv/user/lib
E assert 'venv/user/lib/python/site-packages/INITools-0.3.1-py3.8.egg-info' in {'venv/user/lib/python3.8': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest...pgrade_user_conflict_in_0/workspace:venv/user/lib/python3.8/site-packages/INITools-0.3.1-py3.8.egg-info/PKG-INFO>, ...}
E + where {'venv/user/lib/python3.8': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest...pgrade_user_conflict_in_0/workspace:venv/user/lib/python3.8/site-packages/INITools-0.3.1-py3.8.egg-info/PKG-INFO>, ...} = <tests.lib.TestPipResult object at 0x1118cb700>.files_created
tests/functional/test_install_user.py:172: AssertionError
__________________________________________________ Tests_UserSite.test_install_user_conflict_in_globalsite_and_usersite __________________________________________________
self = <tests.functional.test_install_user.Tests_UserSite object at 0x1118ae2b0>
virtualenv = <VirtualEnvironment /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_user_conflict_in_0/workspace/venv>
script = <tests.lib.PipTestEnvironment object at 0x1118bf520>
@pytest.mark.network
@pytest.mark.incompatible_with_test_venv
def test_install_user_conflict_in_globalsite_and_usersite(
self, virtualenv, script):
"""
Test user install with conflict in globalsite and usersite ignores
global site and updates usersite.
"""
_patch_dist_in_site_packages(virtualenv)
script.pip('install', 'INITools==0.2', '--no-binary=:all:')
script.pip('install', '--user', 'INITools==0.3', '--no-binary=:all:')
result3 = script.pip(
'install', '--user', 'INITools==0.1', '--no-binary=:all:')
# usersite has 0.1
egg_info_folder = (
script.user_site / 'INITools-0.1-py%s.egg-info' % pyversion
)
initools_v3_file = (
# file only in 0.3
script.base_path / script.user_site / 'initools' /
'configparser.py'
)
> assert egg_info_folder in result3.files_created, str(result3)
E AssertionError: Script result: python -m pip install --user INITools==0.1 --no-binary=:all:
E -- stdout: --------------------
E Collecting INITools==0.1
E Downloading INITools-0.1.tar.gz (16 kB)
E Could not build wheels for INITools,since package 'wheel' is not installed.
E Installing collected packages: INITools
E Attempting uninstall: INITools
E Found existing installation: INITools 0.3
E Uninstalling INITools-0.3:
E Successfully uninstalled INITools-0.3
E Running setup.py install for INITools: started
E Running setup.py install for INITools: finished with status 'done'
E Successfully installed INITools-0.1
E
E -- created: -------------------
E venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info
E PKG-INFO (532 bytes)
E SOURCES.txt (332 bytes)
E dependency_links.txt (1 bytes)
E installed-files.txt (593 bytes)
E top_level.txt (9 bytes)
E zip-safe (1 bytes)
E -- deleted: -------------------
E venv/user/lib/python3.8/site-packages/INITools-0.3-py3.8.egg-info
E PKG-INFO (721 bytes)
E SOURCES.txt (688 bytes)
E dependency_links.txt (1 bytes)
E installed-files.txt (747 bytes)
E top_level.txt (9 bytes)
E zip-safe (1 bytes)
E initools/_setmixin.py (2488 bytes)
E configparser.py (34600 bytes)
E -- updated: -------------------
E venv/user/lib/python3.8/site-packages
E initools
E __init__.py (2 bytes)
E configwrapper.py (8346 bytes)
E iniparser.py (7948 bytes)
E inischema.py (13365 bytes)
E lazyiniparser.py (5274 bytes)
E lazyloader.py (8381 bytes)
E nested.py (5262 bytes)
E assert 'venv/user/lib/python/site-packages/INITools-0.1-py3.8.egg-info' in {'venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2...r_conflict_in_0/workspace:venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info/dependency_links.txt>, ...}
E + where {'venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2...r_conflict_in_0/workspace:venv/user/lib/python3.8/site-packages/INITools-0.1-py3.8.egg-info/dependency_links.txt>, ...} = <tests.lib.TestPipResult object at 0x1118aedc0>.files_created
tests/functional/test_install_user.py:209: AssertionError
________________________________________________________________________ test_install_user_wheel _________________________________________________________________________
script = <tests.lib.PipTestEnvironment object at 0x110effeb0>, shared_data = <tests.lib.TestData object at 0x1110fd0d0>, with_wheel = None
tmpdir = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_user_wheel0')
@pytest.mark.incompatible_with_test_venv
def test_install_user_wheel(script, shared_data, with_wheel, tmpdir):
"""
Test user install from wheel (that has a script)
"""
shutil.copy(
shared_data.packages / "has.script-1.0-py2.py3-none-any.whl", tmpdir
)
result = script.pip(
'install', 'has.script==1.0', '--user', '--no-index',
'--find-links', tmpdir,
)
egg_info_folder = script.user_site / 'has.script-1.0.dist-info'
> assert egg_info_folder in result.files_created, str(result)
E AssertionError: Script result: python -m pip install has.script==1.0 --user --no-index --find-links /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_user_wheel0
E -- stdout: --------------------
E Looking in links: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_user_wheel0
E Processing /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_user_wheel0/has.script-1.0-py2.py3-none-any.whl
E Installing collected packages: has.script
E Successfully installed has.script-1.0
E
E -- created: -------------------
E venv/user/bin
E script.py (8 bytes)
E lib/python3.8
E site-packages
E has.script-1.0.dist-info
E DESCRIPTION.rst (10 bytes)
E INSTALLER (4 bytes)
E METADATA (172 bytes)
E RECORD (710 bytes)
E WHEEL (103 bytes)
E pydist.json (180 bytes)
E top_level.txt (1 bytes)
E -- updated: -------------------
E venv/user
E lib
E assert Path('venv/user/lib/python/site-packages/has.script-1.0.dist-info') in {'venv/user/bin': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_i...c6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_user_wheel0/workspace:venv/user/lib/python3.8/site-packages>, ...}
E + where {'venv/user/bin': <FoundDir /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_i...c6rr0000gn/T/pytest-of-jaraco/pytest-19/test_install_user_wheel0/workspace:venv/user/lib/python3.8/site-packages>, ...} = <tests.lib.TestPipResult object at 0x110db7d00>.files_created
tests/functional/test_install_wheel.py:285: AssertionError
____________________________________________________________________ test_uninstall_editable_from_svn ____________________________________________________________________
script = <tests.lib.PipTestEnvironment object at 0x1118618b0>
tmpdir = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_s0')
@pytest.mark.network
@need_svn
def test_uninstall_editable_from_svn(script, tmpdir):
"""
Test uninstalling an editable installation from svn.
"""
result = script.pip(
'install', '-e',
'%s#egg=initools' % (
> local_checkout('svn+http://svn.colorstudy.com/INITools', tmpdir)
),
)
tests/functional/test_uninstall.py:332:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/lib/local_repos.py:63: in local_checkout
_create_svn_initools_repo(repo_url_path)
tests/lib/local_repos.py:22: in _create_svn_initools_repo
subprocess.check_call('svnadmin create INITools'.split(), cwd=directory)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:359: in check_call
retcode = call(*popenargs, **kwargs)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:340: in call
with Popen(*popenargs, **kwargs) as p:
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:854: in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x1118616a0>, args = ['svnadmin', 'create', 'INITools'], executable = b'svnadmin', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_s0/cache', env = None, startupinfo = None
creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1, errwrite = -1, restore_signals = True, start_new_session = False
def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""
if isinstance(args, (str, bytes)):
args = [args]
elif isinstance(args, os.PathLike):
if shell:
raise TypeError('path-like args is not allowed when '
'shell is true')
args = [args]
else:
args = list(args)
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
args = [unix_shell, "-c"] + args
if executable:
args[0] = executable
if executable is None:
executable = args[0]
sys.audit("subprocess.Popen", executable, args, cwd, env)
if (_USE_POSIX_SPAWN
and os.path.dirname(executable)
and preexec_fn is None
and not close_fds
and not pass_fds
and cwd is None
and (p2cread == -1 or p2cread > 2)
and (c2pwrite == -1 or c2pwrite > 2)
and (errwrite == -1 or errwrite > 2)
and not start_new_session):
self._posix_spawn(args, executable, env, restore_signals,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
return
orig_executable = executable
# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()
if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)
self._close_pipe_fds(p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)
if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass
try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: 'svnadmin'
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:1702: FileNotFoundError
_____________________________________________________________________ test_uninstall_from_reqs_file ______________________________________________________________________
script = <tests.lib.PipTestEnvironment object at 0x1118490a0>
tmpdir = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_from_reqs_file0')
@pytest.mark.network
@need_svn
def test_uninstall_from_reqs_file(script, tmpdir):
"""
Test uninstall from a requirements file.
"""
> local_svn_url = local_checkout(
'svn+http://svn.colorstudy.com/INITools', tmpdir,
)
tests/functional/test_uninstall.py:394:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/lib/local_repos.py:63: in local_checkout
_create_svn_initools_repo(repo_url_path)
tests/lib/local_repos.py:22: in _create_svn_initools_repo
subprocess.check_call('svnadmin create INITools'.split(), cwd=directory)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:359: in check_call
retcode = call(*popenargs, **kwargs)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:340: in call
with Popen(*popenargs, **kwargs) as p:
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:854: in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x111849e50>, args = ['svnadmin', 'create', 'INITools'], executable = b'svnadmin', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_from_reqs_file0/cache', env = None, startupinfo = None
creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1, errwrite = -1, restore_signals = True, start_new_session = False
def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""
if isinstance(args, (str, bytes)):
args = [args]
elif isinstance(args, os.PathLike):
if shell:
raise TypeError('path-like args is not allowed when '
'shell is true')
args = [args]
else:
args = list(args)
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
args = [unix_shell, "-c"] + args
if executable:
args[0] = executable
if executable is None:
executable = args[0]
sys.audit("subprocess.Popen", executable, args, cwd, env)
if (_USE_POSIX_SPAWN
and os.path.dirname(executable)
and preexec_fn is None
and not close_fds
and not pass_fds
and cwd is None
and (p2cread == -1 or p2cread > 2)
and (c2pwrite == -1 or c2pwrite > 2)
and (errwrite == -1 or errwrite > 2)
and not start_new_session):
self._posix_spawn(args, executable, env, restore_signals,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
return
orig_executable = executable
# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()
if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)
self._close_pipe_fds(p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)
if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass
try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: 'svnadmin'
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py:1702: FileNotFoundError
__________________________________________________________ Tests_UninstallUserSite.test_uninstall_from_usersite __________________________________________________________
self = <tests.functional.test_uninstall_user.Tests_UninstallUserSite object at 0x1118dc100>, script = <tests.lib.PipTestEnvironment object at 0x111895460>
@pytest.mark.network
def test_uninstall_from_usersite(self, script):
"""
Test uninstall from usersite
"""
result1 = script.pip('install', '--user', 'INITools==0.3')
result2 = script.pip('uninstall', '-y', 'INITools')
> assert_all_changes(result1, result2, [script.venv / 'build', 'cache'])
E tests.lib.TestFailure: Unexpected changes:
E deleted:
E created: venv/user/lib/python3.8/site-packages, venv/user/lib/python3.8
E updated:
tests/functional/test_uninstall_user.py:22: TestFailure
_____________________________________________ Tests_UninstallUserSite.test_uninstall_from_usersite_with_dist_in_global_site ______________________________________________
self = <tests.functional.test_uninstall_user.Tests_UninstallUserSite object at 0x1119462e0>
virtualenv = <VirtualEnvironment /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_from_usersite_w0/workspace/venv>
script = <tests.lib.PipTestEnvironment object at 0x111946a30>
def test_uninstall_from_usersite_with_dist_in_global_site(
self, virtualenv, script):
"""
Test uninstall from usersite (with same dist in global site)
"""
_patch_dist_in_site_packages(virtualenv)
script.pip_install_local('pip-test-package==0.1', '--no-binary=:all:')
result2 = script.pip_install_local(
'--user', 'pip-test-package==0.1.1', '--no-binary=:all:')
result3 = script.pip('uninstall', '-vy', 'pip-test-package')
# uninstall console is mentioning user scripts, but not global scripts
assert normcase(script.user_bin_path) in result3.stdout, str(result3)
assert normcase(script.bin_path) not in result3.stdout, str(result3)
# uninstall worked
> assert_all_changes(result2, result3, [script.venv / 'build', 'cache'])
E tests.lib.TestFailure: Unexpected changes:
E deleted:
E created: venv/user/lib/python3.8/site-packages, venv/user/lib/python3.8
E updated:
tests/functional/test_uninstall_user.py:42: TestFailure
_____________________________________________________ Tests_UninstallUserSite.test_uninstall_editable_from_usersite ______________________________________________________
self = <tests.functional.test_uninstall_user.Tests_UninstallUserSite object at 0x111a4c2b0>, script = <tests.lib.PipTestEnvironment object at 0x111a484f0>
data = <tests.lib.TestData object at 0x111a48d60>
def test_uninstall_editable_from_usersite(self, script, data):
"""
Test uninstall editable local user install
"""
assert script.user_site_path.exists()
# install
to_install = data.packages.joinpath("FSPkg")
> result1 = script.pip(
'install', '--user', '-e', to_install
)
tests/functional/test_uninstall_user.py:59:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <tests.lib.PipTestEnvironment object at 0x111a484f0>, args = ('python', '-m', 'pip', 'install', '--user', '-e', ...), kw = {'expect_stderr': True}
cwd = Path('/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/workspace/scratch'), run_from = None
allow_stderr_error = False, allow_stderr_warning = False, expect_error = None
def run(self, *args, **kw):
"""
:param allow_stderr_error: whether a logged error is allowed in
stderr. Passing True for this argument implies
`allow_stderr_warning` since warnings are weaker than errors.
:param allow_stderr_warning: whether a logged warning (or
deprecation message) is allowed in stderr.
:param expect_error: if False (the default), asserts that the command
exits with 0. Otherwise, asserts that the command exits with a
non-zero exit code. Passing True also implies allow_stderr_error
and allow_stderr_warning.
:param expect_stderr: whether to allow warnings in stderr (equivalent
to `allow_stderr_warning`). This argument is an abbreviated
version of `allow_stderr_warning` and is also kept for backwards
compatibility.
"""
if self.verbose:
print('>> running %s %s' % (args, kw))
cwd = kw.pop('cwd', None)
run_from = kw.pop('run_from', None)
assert not cwd or not run_from, "Don't use run_from; it's going away"
cwd = cwd or run_from or self.cwd
if sys.platform == 'win32':
# Partial fix for ScriptTest.run using `shell=True` on Windows.
args = [str(a).replace('^', '^^').replace('&', '^&') for a in args]
# Remove `allow_stderr_error` and `allow_stderr_warning` before
# calling run() because PipTestEnvironment doesn't support them.
allow_stderr_error = kw.pop('allow_stderr_error', None)
allow_stderr_warning = kw.pop('allow_stderr_warning', None)
# Propagate default values.
expect_error = kw.get('expect_error')
if expect_error:
# Then default to allowing logged errors.
if allow_stderr_error is not None and not allow_stderr_error:
raise RuntimeError(
'cannot pass allow_stderr_error=False with '
'expect_error=True'
)
allow_stderr_error = True
elif kw.get('expect_stderr'):
# Then default to allowing logged warnings.
if allow_stderr_warning is not None and not allow_stderr_warning:
raise RuntimeError(
'cannot pass allow_stderr_warning=False with '
'expect_stderr=True'
)
allow_stderr_warning = True
if allow_stderr_error:
if allow_stderr_warning is not None and not allow_stderr_warning:
raise RuntimeError(
'cannot pass allow_stderr_warning=False with '
'allow_stderr_error=True'
)
# Default values if not set.
if allow_stderr_error is None:
allow_stderr_error = False
if allow_stderr_warning is None:
allow_stderr_warning = allow_stderr_error
# Pass expect_stderr=True to allow any stderr. We do this because
# we do our checking of stderr further on in check_stderr().
kw['expect_stderr'] = True
> result = super(PipTestEnvironment, self).run(cwd=cwd, *args, **kw)
E AssertionError: Script returned code: 1
tests/lib/__init__.py:591: AssertionError
-------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------
Script result: python -m pip install --user -e /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/data/packages/FSPkg
return code: 1
-- stderr: --------------------
ERROR: Command errored out with exit status 1:
command: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/workspace/venv/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/data/packages/FSPkg/setup.py'"'"'; __file__='"'"'/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/data/packages/FSPkg/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps --user --prefix=
cwd: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/data/packages/FSPkg/
Complete output (19 lines):
running develop
/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/setuptools0/install/setuptools/dist.py:473: UserWarning: Normalizing '0.1dev' to '0.1.dev0'
warnings.warn(
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 2] No such file or directory: '/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/workspace/venv/user/lib/python3.8/site-packages/test-easy-install-1256.write-test'
The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/workspace/venv/user/lib/python3.8/site-packages
This directory does not currently exist. Please create it and try again, or
choose a different installation directory (using the -d or --install-dir
option).
----------------------------------------
ERROR: Command errored out with exit status 1: /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/workspace/venv/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/data/packages/FSPkg/setup.py'"'"'; __file__='"'"'/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/data/packages/FSPkg/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps --user --prefix= Check the logs for full command output.
-- stdout: --------------------
Obtaining file:///private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pytest-of-jaraco/pytest-19/test_uninstall_editable_from_u0/data/packages/FSPkg
Could not build wheels for FSPkg,since package 'wheel' is not installed.
Installing collected packages: FSPkg
Running setup.py develop for FSPkg
======================================================================== short test summary info =========================================================================
FAIL tests/functional/test_freeze.py::test_freeze_svn
FAIL tests/functional/test_install.py::test_basic_install_editable_from_svn
FAIL tests/functional/test_install.py::test_user_config_accepted
FAIL tests/functional/test_install_reqs.py::test_multiple_requirements_files
FAIL tests/functional/test_install_user.py::Tests_UserSite::()::test_install_subversion_usersite_editable_with_distribute
FAIL tests/functional/test_install_user.py::Tests_UserSite::()::test_install_from_current_directory_into_usersite
FAIL tests/functional/test_install_user.py::Tests_UserSite::()::test_install_user_conflict_in_usersite
FAIL tests/functional/test_install_user.py::Tests_UserSite::()::test_install_user_conflict_in_globalsite
FAIL tests/functional/test_install_user.py::Tests_UserSite::()::test_upgrade_user_conflict_in_globalsite
FAIL tests/functional/test_install_user.py::Tests_UserSite::()::test_install_user_conflict_in_globalsite_and_usersite
FAIL tests/functional/test_install_wheel.py::test_install_user_wheel
FAIL tests/functional/test_uninstall.py::test_uninstall_editable_from_svn
FAIL tests/functional/test_uninstall.py::test_uninstall_from_reqs_file
FAIL tests/functional/test_uninstall_user.py::Tests_UninstallUserSite::()::test_uninstall_from_usersite
FAIL tests/functional/test_uninstall_user.py::Tests_UninstallUserSite::()::test_uninstall_from_usersite_with_dist_in_global_site
FAIL tests/functional/test_uninstall_user.py::Tests_UninstallUserSite::()::test_uninstall_editable_from_usersite
SKIP [1] tests/functional/test_configuration.py:19: Can't modify underlying file for any mode
SKIP [1] tests/functional/test_install.py:630: Python 2 only
SKIP [1] /Users/jaraco/code/public/pypa/pip/tests/functional/test_no_color.py:34: Unable to capture output using script: script --flush --quiet --return /tmp/pip-test-no-color.txt --command "pip uninstall noSuchPackage"
SKIP [1] tests/functional/test_requests.py:4: <Skipped instance>
SKIP [1] tests/functional/test_search.py:81: Warehouse search behavior is different and no longer returns multiple results. See https://github.com/pypa/warehouse/issues/3717 for more information.
SKIP [1] tests/functional/test_vcs_bazaar.py:20: Bazaar is only required under Travis
SKIP [1] tests/functional/test_warning.py:52: Python 2 only
SKIP [1] tests/functional/test_warning.py:62: Python 2 only
SKIP [1] tests/unit/test_collector.py:235: condition: sys.platform != 'win32'
SKIP [2] tests/unit/test_collector.py:258: condition: sys.platform != 'win32'
SKIP [1] tests/unit/test_locations.py:94: Incompatible with venv
SKIP [1] tests/unit/test_locations.py:112: Incompatible with venv
SKIP [3] tests/unit/test_req.py:673: Test only available on Windows
SKIP [1] tests/unit/test_urls.py:27: condition: sys.platform != 'win32'
SKIP [1] tests/unit/test_urls.py:59: condition: sys.platform != 'win32'
SKIP [2] tests/unit/test_utils_subprocess.py:105: condition: sys.version_info >= (3,)
SKIP [1] tests/unit/test_vcs.py:24: Subversion is only required under Travis
XFAIL tests/functional/test_freeze.py::test_freeze_exclude_editable
XFAIL tests/functional/test_install_reqs.py::test_install_distribution_union_conflicting_extras
XFAIL tests/functional/test_yaml.py::test_yaml_based[install/conflicting_triangle]
XFAIL tests/functional/test_yaml.py::test_yaml_based[install/conflicting_diamond]
XFAIL tests/functional/test_yaml.py::test_yaml_based[install/extras-2]
============================================================================ warnings summary ============================================================================
/Users/jaraco/code/public/pypa/pip/.tox/python/lib/python3.8/site-packages/pip/_internal/req/req_file.py:209: UserWarning: Disabling all use of wheels due to the use of --build-option / --global-option / --install-option.
cmdoptions.check_install_build_global(options, line.opts)
-- Docs: https://docs.pytest.org/en/latest/warnings.html
============================================== 16 failed, 1791 passed, 21 skipped, 5 xfailed, 1 warnings in 609.03 seconds ===============================================
ERROR: InvocationError for command /Users/jaraco/code/public/pypa/pip/.tox/python/bin/pytest --timeout 300 (exited with code 1)
________________________________________________________________________________ summary _________________________________________________________________________________
ERROR: python: commands failed
Issue Analytics
- State:
- Created 4 years ago
- Comments:10 (10 by maintainers)
Top Results From Across the Web
Issue 37706: IDLE: fix sidebar click-drag bug and macOS test failures
On macOS, there are two test failure seen with test_sidebar (tested on 10.14 with Tk 8.6.8 and 8.6.0 - the failures should be...
Read more >Issue 33725: Python crashes on macOS after fork with no exec
msg318352 ‑ (view) Author: Kapil Thangavelu (kapilt) Date: 2018‑06‑01 00:53
msg318361 ‑ (view) Author: Ronald Oussoren (ronaldoussoren) * Date: 2018‑06‑01 05:51
msg318396 ‑ (view) Author:...
Read more >Issue 36750: test_socket leaks file descriptors on macOS - Python ...
Mac OS seems to fail with leaked references which I think is unrelated to the ... The test failure is reproducible on the...
Read more >Issue 34105: test_socket.test_host_resolution_bad_address fails on ...
On my Mac OS X 10.13.6 system ... beta of macOS 10.14 (With python 3.7.0) I'm currently building the current master to check...
Read more >Issue 41129: setup.py test for macOS SDK files may ...
Main Description: On Mac 10.15.1 with Xcode11 I encounter compilation errors when building the latest Python 3.8.2 source.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
The commit in af9f744 works around the issue. Feel free to merge that in or address the underlying cause.
I don’t believe the aforementioned commit is in master (though it’s not obvious to me from what I can see in GitHub). Even if merged into master, it’s only a workaround and this ticket maybe should remain open to address the root cause.