]> granicus.if.org Git - python/commitdiff
bpo-32409: Ensures activate.bat can handle Unicode contents (GH-5757)
authorSteve Dower <steve.dower@microsoft.com>
Tue, 20 Feb 2018 01:25:24 +0000 (17:25 -0800)
committerGitHub <noreply@github.com>
Tue, 20 Feb 2018 01:25:24 +0000 (17:25 -0800)
Lib/test/test_venv.py
Lib/venv/scripts/nt/activate.bat
Misc/NEWS.d/next/Windows/2018-02-19-10-00-57.bpo-32409.nocuDg.rst [new file with mode: 0644]

index c55042677067700625fc988c7d15c7da36b09e0a..9cea87e2fefa657d0e52ef847a9709780d6f84a5 100644 (file)
@@ -281,6 +281,24 @@ class BasicTest(BaseTest):
         out, err = p.communicate()
         self.assertEqual(out.strip(), envpy.encode())
 
+    @unittest.skipUnless(os.name == 'nt', 'only relevant on Windows')
+    def test_unicode_in_batch_file(self):
+        """
+        Test isolation from system site-packages
+        """
+        rmtree(self.env_dir)
+        env_dir = os.path.join(os.path.realpath(self.env_dir), 'ϼўТλФЙ')
+        builder = venv.EnvBuilder(clear=True)
+        builder.create(env_dir)
+        activate = os.path.join(env_dir, self.bindir, 'activate.bat')
+        envpy = os.path.join(env_dir, self.bindir, self.exe)
+        cmd = [activate, '&', self.exe, '-c', 'print(0)']
+        p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+                             stderr=subprocess.PIPE, encoding='oem',
+                             shell=True)
+        out, err = p.communicate()
+        print(err)
+        self.assertEqual(out.strip(), '0')
 
 @skipInVenv
 class EnsurePipTest(BaseTest):
index d76ca1359627eedb8967f4f580f11a969628e591..126049f495fe3bd5ba9f97faf2c947a7fe23668e 100644 (file)
@@ -1,4 +1,13 @@
 @echo off
+
+rem This file is UTF-8 encoded, so we need to update the current code page while executing it
+for /f "tokens=2 delims=:" %%a in ('"%SystemRoot%\System32\chcp.com"') do (
+    set "_OLD_CODEPAGE=%%a"
+)
+if defined _OLD_CODEPAGE (
+    "%SystemRoot%\System32\chcp.com" 65001 > nul
+)
+
 set "VIRTUAL_ENV=__VENV_DIR__"
 
 if not defined PROMPT (
@@ -30,3 +39,7 @@ if defined _OLD_VIRTUAL_PATH (
 set "PATH=%VIRTUAL_ENV%\__VENV_BIN_NAME__;%PATH%"
 
 :END
+if defined _OLD_CODEPAGE (
+    "%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul
+    set "_OLD_CODEPAGE="
+)
diff --git a/Misc/NEWS.d/next/Windows/2018-02-19-10-00-57.bpo-32409.nocuDg.rst b/Misc/NEWS.d/next/Windows/2018-02-19-10-00-57.bpo-32409.nocuDg.rst
new file mode 100644 (file)
index 0000000..36251b0
--- /dev/null
@@ -0,0 +1 @@
+Ensures activate.bat can handle Unicode contents.