[Python-checkins] r85762 - in python/branches/py3k/Lib/test: test_cmd_line.py test_sys.py
victor.stinner
python-checkins at python.org
Wed Oct 20 23:52:33 CEST 2010
Author: victor.stinner
Date: Wed Oct 20 23:52:33 2010
New Revision: 85762
Log:
Move test_undecodable_code() from test_sys to test_cmd_line
Modified:
python/branches/py3k/Lib/test/test_cmd_line.py
python/branches/py3k/Lib/test/test_sys.py
Modified: python/branches/py3k/Lib/test/test_cmd_line.py
==============================================================================
--- python/branches/py3k/Lib/test/test_cmd_line.py (original)
+++ python/branches/py3k/Lib/test/test_cmd_line.py Wed Oct 20 23:52:33 2010
@@ -108,6 +108,44 @@
command = "assert(ord('\xe9') == 0xe9)"
assert_python_ok('-c', command)
+ # On Windows, pass bytes to subprocess doesn't test how Python decodes the
+ # command line, but how subprocess does decode bytes to unicode. Python
+ # doesn't decode the command line because Windows provides directly the
+ # arguments as unicode (using wmain() instead of main()).
+ @unittest.skipIf(sys.platform == 'win32',
+ 'Windows has a native unicode API')
+ def test_undecodable_code(self):
+ undecodable = b"\xff"
+ env = os.environ.copy()
+ # Use C locale to get ascii for the locale encoding
+ env['LC_ALL'] = 'C'
+ code = (
+ b'import locale; '
+ b'print(ascii("' + undecodable + b'"), '
+ b'locale.getpreferredencoding())')
+ p = subprocess.Popen(
+ [sys.executable, "-c", code],
+ stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
+ env=env)
+ stdout, stderr = p.communicate()
+ if p.returncode == 1:
+ # _Py_char2wchar() decoded b'\xff' as '\udcff' (b'\xff' is not
+ # decodable from ASCII) and run_command() failed on
+ # PyUnicode_AsUTF8String(). This is the expected behaviour on
+ # Linux.
+ pattern = b"Unable to decode the command from the command line:"
+ elif p.returncode == 0:
+ # _Py_char2wchar() decoded b'\xff' as '\xff' even if the locale is
+ # C and the locale encoding is ASCII. It occurs on FreeBSD, Solaris
+ # and Mac OS X.
+ pattern = b"'\\xff' "
+ # The output is followed by the encoding name, an alias to ASCII.
+ # Examples: "US-ASCII" or "646" (ISO 646, on Solaris).
+ else:
+ raise AssertionError("Unknown exit code: %s, output=%a" % (p.returncode, stdout))
+ if not stdout.startswith(pattern):
+ raise AssertionError("%a doesn't start with %a" % (stdout, pattern))
+
def test_unbuffered_output(self):
# Test expected operation of the '-u' switch
for stream in ('stdout', 'stderr'):
Modified: python/branches/py3k/Lib/test/test_sys.py
==============================================================================
--- python/branches/py3k/Lib/test/test_sys.py (original)
+++ python/branches/py3k/Lib/test/test_sys.py Wed Oct 20 23:52:33 2010
@@ -496,44 +496,6 @@
self.assertRaises(TypeError, sys.intern, S("abc"))
- # On Windows, pass bytes to subprocess doesn't test how Python decodes the
- # command line, but how subprocess does decode bytes to unicode. Python
- # doesn't decode the command line because Windows provides directly the
- # arguments as unicode (using wmain() instead of main()).
- @unittest.skipIf(sys.platform == 'win32',
- 'Windows has a native unicode API')
- def test_undecodable_code(self):
- undecodable = b"\xff"
- env = os.environ.copy()
- # Use C locale to get ascii for the locale encoding
- env['LC_ALL'] = 'C'
- code = (
- b'import locale; '
- b'print(ascii("' + undecodable + b'"), '
- b'locale.getpreferredencoding())')
- p = subprocess.Popen(
- [sys.executable, "-c", code],
- stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
- env=env)
- stdout, stderr = p.communicate()
- if p.returncode == 1:
- # _Py_char2wchar() decoded b'\xff' as '\udcff' (b'\xff' is not
- # decodable from ASCII) and run_command() failed on
- # PyUnicode_AsUTF8String(). This is the expected behaviour on
- # Linux.
- pattern = b"Unable to decode the command from the command line:"
- elif p.returncode == 0:
- # _Py_char2wchar() decoded b'\xff' as '\xff' even if the locale is
- # C and the locale encoding is ASCII. It occurs on FreeBSD, Solaris
- # and Mac OS X.
- pattern = b"'\\xff' "
- # The output is followed by the encoding name, an alias to ASCII.
- # Examples: "US-ASCII" or "646" (ISO 646, on Solaris).
- else:
- raise AssertionError("Unknown exit code: %s, output=%a" % (p.returncode, stdout))
- if not stdout.startswith(pattern):
- raise AssertionError("%a doesn't start with %a" % (stdout, pattern))
-
def test_sys_flags(self):
self.assertTrue(sys.flags)
attrs = ("debug", "division_warning",
More information about the Python-checkins
mailing list