Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Skip $PATH entries we cannot check rather than dying with PermissionE…
…rror On Fedora CI, I used runuser to get rid of root privileges before testing virtualenv. The invocation I used did not clear the root's $PATH and as a result, one of the entries in $PATH was /root/.local/bin. But /root/ does not allow other users to browse (execute, read). That lead to an unhanded PermissionError. When this happens, the $PATH entry is now skipped as if it did not exist. As there might be other reasons we cannot check if the $PATH entry exists, I decided to suppress all OSError types. For clarity, here is the Traceback I was getting: # runuser testuser -c 'virtualenv --with-traceback --python pypy3.10 venv' Traceback (most recent call last): File "/usr/bin/virtualenv", line 8, in <module> sys.exit(run_with_catch()) ~~~~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/virtualenv/__main__.py", line 56, in run_with_catch run(args, options, env) ~~~^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/__main__.py", line 18, in run session = cli_run(args, options, env) File "/usr/lib/python3.13/site-packages/virtualenv/run/__init__.py", line 31, in cli_run of_session = session_via_cli(args, options, setup_logging, env) File "/usr/lib/python3.13/site-packages/virtualenv/run/__init__.py", line 49, in session_via_cli parser, elements = build_parser(args, options, setup_logging, env) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/run/__init__.py", line 77, in build_parser parser._interpreter = interpreter = discover.interpreter # noqa: SLF001 ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/discovery/discover.py", line 41, in interpreter self._interpreter = self.run() ~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/virtualenv/discovery/builtin.py", line 58, in run result = get_interpreter(python_spec, self.try_first_with, self.app_data, self._env) File "/usr/lib/python3.13/site-packages/virtualenv/discovery/builtin.py", line 75, in get_interpreter for interpreter, impl_must_match in propose_interpreters(spec, try_first_with, app_data, env): ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/discovery/builtin.py", line 147, in propose_interpreters for pos, path in enumerate(get_paths(env)): ~~~~~~~~~^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/discovery/builtin.py", line 169, in get_paths if p.exists(): ~~~~~~~~^^ File "/usr/lib64/python3.13/pathlib/_abc.py", line 450, in exists self.stat(follow_symlinks=follow_symlinks) ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.13/pathlib/_local.py", line 515, in stat return os.stat(self, follow_symlinks=follow_symlinks) ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied: '/root/.local/bin'
- Loading branch information