diff options
-rw-r--r-- | Lib/test/test_venv.py | 20 | ||||
-rw-r--r-- | Lib/venv/scripts/common/activate | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-08-19-10-31-41.bpo-37885.4Nc9sp.rst | 1 |
3 files changed, 22 insertions, 1 deletions
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index de93d95..0103de8 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -9,6 +9,7 @@ import ensurepip import os import os.path import re +import shutil import struct import subprocess import sys @@ -360,6 +361,25 @@ class BasicTest(BaseTest): 'pool.terminate()']) self.assertEqual(out.strip(), "python".encode()) + @unittest.skipIf(os.name == 'nt', 'not relevant on Windows') + def test_deactivate_with_strict_bash_opts(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_strict.sh") + with open(test_script, "w") as f: + f.write("set -euo pipefail\n" + f"source {activate}\n" + "deactivate\n") + out, err = check_output([bash, test_script]) + self.assertEqual(out, "".encode()) + self.assertEqual(err, "".encode()) + + @requireVenvCreate class EnsurePipTest(BaseTest): """Test venv module installation of pip.""" diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate index 6a2320a..b1b4625 100644 --- a/Lib/venv/scripts/common/activate +++ b/Lib/venv/scripts/common/activate @@ -28,7 +28,7 @@ deactivate () { fi unset VIRTUAL_ENV - if [ ! "$1" = "nondestructive" ] ; then + if [ ! "${1:-}" = "nondestructive" ] ; then # Self destruct! unset -f deactivate fi diff --git a/Misc/NEWS.d/next/Library/2019-08-19-10-31-41.bpo-37885.4Nc9sp.rst b/Misc/NEWS.d/next/Library/2019-08-19-10-31-41.bpo-37885.4Nc9sp.rst new file mode 100644 index 0000000..055d029 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-08-19-10-31-41.bpo-37885.4Nc9sp.rst @@ -0,0 +1 @@ +venv: Don't generate unset variable warning on deactivate.
\ No newline at end of file |