[Python-checkins] r80161 - python/branches/py3k/Lib/test/test_site.py

victor.stinner python-checkins at python.org
Sun Apr 18 09:59:53 CEST 2010


Author: victor.stinner
Date: Sun Apr 18 09:59:53 2010
New Revision: 80161

Log:
Issue #8340, test_abs_path() of test_site: encode paths to ASCII with
backslashreplace to avoid locale issues, don't write stderr to a pipe to ease
debug, separate directories by newlines instead of a space.


Modified:
   python/branches/py3k/Lib/test/test_site.py

Modified: python/branches/py3k/Lib/test/test_site.py
==============================================================================
--- python/branches/py3k/Lib/test/test_site.py	(original)
+++ python/branches/py3k/Lib/test/test_site.py	Sun Apr 18 09:59:53 2010
@@ -268,26 +268,31 @@
         parent = os.path.relpath(os.path.dirname(os.__file__))
         env = os.environ.copy()
         env['PYTHONPATH'] = parent
-        command = 'import os; print(os.__file__, os.__cached__)'
+        code = ('import os, sys',
+            # use ASCII to avoid locale issues with non-ASCII directories
+            'os_file = os.__file__.encode("ascii", "backslashreplace")',
+            r'sys.stdout.buffer.write(os_file + b"\n")',
+            'os_cached = os.__cached__.encode("ascii", "backslashreplace")',
+            r'sys.stdout.buffer.write(os_cached + b"\n")')
+        command = '\n'.join(code)
         # First, prove that with -S (no 'import site'), the paths are
         # relative.
         proc = subprocess.Popen([sys.executable, '-S', '-c', command],
                                 env=env,
-                                stdout=subprocess.PIPE,
-                                stderr=subprocess.PIPE)
+                                stdout=subprocess.PIPE)
         stdout, stderr = proc.communicate()
+
         self.assertEqual(proc.returncode, 0)
-        os__file__, os__cached__ = stdout.split()
+        os__file__, os__cached__ = stdout.splitlines()[:2]
         self.assertFalse(os.path.isabs(os__file__))
         self.assertFalse(os.path.isabs(os__cached__))
         # Now, with 'import site', it works.
         proc = subprocess.Popen([sys.executable, '-c', command],
                                 env=env,
-                                stdout=subprocess.PIPE,
-                                stderr=subprocess.PIPE)
+                                stdout=subprocess.PIPE)
         stdout, stderr = proc.communicate()
         self.assertEqual(proc.returncode, 0)
-        os__file__, os__cached__ = stdout.split()
+        os__file__, os__cached__ = stdout.splitlines()[:2]
         self.assertTrue(os.path.isabs(os__file__))
         self.assertTrue(os.path.isabs(os__cached__))
 


More information about the Python-checkins mailing list