Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions Lib/test/test_venv.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
4 changes: 2 additions & 2 deletions Lib/venv/scripts/common/activate
Original file line number Diff line number Diff line change
Expand Up @@ -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:-}"
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix bad return code from Lib/venv/bin/activate if hashing is disabled
Loading