[3.15] gh-149701: Fully silence potential hash -r error (GH-149702) (GH-149757)

(cherry picked from commit cd6096887e)
This commit is contained in:
Miss Islington (bot) 2026-05-13 11:28:27 +02:00 committed by GitHub
parent 15a597e9ba
commit 4e369c1dea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 23 additions and 2 deletions

View file

@ -656,6 +656,26 @@ def test_deactivate_with_strict_bash_opts(self):
self.assertEqual(out, "".encode())
self.assertEqual(err, "".encode())
# gh-149701: Test exit code is zero even when hashing is disabled
@unittest.skipIf(os.name == 'nt', 'not relevant on Windows')
def test_deactivate_with_strict_bash_opts_and_hashing_disabled(self):
bash = shutil.which("bash")
if bash is None:
self.skipTest("bash required for this test")
rmtree(self.env_dir)
builder = venv.EnvBuilder(clear=True)
builder.create(self.env_dir)
activate = os.path.join(self.env_dir, self.bindir, "activate")
test_script = os.path.join(self.env_dir, "test_hash_disabled.sh")
with open(test_script, "w") as f:
f.write("set -euo pipefail\n"
"set +h\n" # disable hashing
f"source {activate}\n"
"deactivate")
out, err = check_output([bash, test_script])
self.assertEqual(out, "".encode())
self.assertEqual(err, "".encode())
@unittest.skipUnless(sys.platform == 'darwin', 'only relevant on macOS')
def test_macos_env(self):

View file

@ -17,7 +17,7 @@ deactivate () {
# Call hash to forget past locations. Without forgetting
# past locations the $PATH changes we made may not be respected.
# See "man bash" for more details. hash is usually a builtin of your shell
hash -r 2> /dev/null
hash -r 2> /dev/null || true
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
PS1="${_OLD_VIRTUAL_PS1:-}"
@ -73,4 +73,4 @@ fi
# Call hash to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
hash -r 2> /dev/null
hash -r 2> /dev/null || true

View file

@ -0,0 +1 @@
Fix bad return code from Lib/venv/bin/activate if hashing is disabled