[Python-checkins] cpython (merge 3.3 -> default): (Merge 3.3) Issue #17223: Fix test_array on Windows (16-bit wchar_t/Py_UNICODE)

victor.stinner python-checkins at python.org
Tue Feb 26 22:52:44 CET 2013


http://hg.python.org/cpython/rev/5aaf6bc1d502
changeset:   82408:5aaf6bc1d502
parent:      82406:0db66afbd746
parent:      82407:66e9d0185b0f
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Tue Feb 26 22:52:25 2013 +0100
summary:
  (Merge 3.3) Issue #17223: Fix test_array on Windows (16-bit wchar_t/Py_UNICODE)

files:
  Lib/test/test_array.py |  29 ++++++++++++++++++-----------
  1 files changed, 18 insertions(+), 11 deletions(-)


diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -24,6 +24,17 @@
 except struct.error:
     have_long_long = False
 
+try:
+    import ctypes
+    sizeof_wchar = ctypes.sizeof(ctypes.c_wchar)
+except ImportError:
+    import sys
+    if sys.platform == 'win32':
+        sizeof_wchar = 2
+    else:
+        sizeof_wchar = 4
+
+
 class ArraySubclass(array.array):
     pass
 
@@ -1040,16 +1051,6 @@
     minitemsize = 2
 
     def test_unicode(self):
-        try:
-            import ctypes
-            sizeof_wchar = ctypes.sizeof(ctypes.c_wchar)
-        except ImportError:
-            import sys
-            if sys.platform == 'win32':
-                sizeof_wchar = 2
-            else:
-                sizeof_wchar = 4
-
         self.assertRaises(TypeError, array.array, 'b', 'foo')
 
         a = array.array('u', '\xa0\xc2\u1234')
@@ -1071,7 +1072,13 @@
 
     def test_issue17223(self):
         # this used to crash
-        a = array.array('u', b'\xff' * 4)
+        if sizeof_wchar == 4:
+            # U+FFFFFFFF is an invalid code point in Unicode 6.0
+            invalid_str = b'\xff\xff\xff\xff'
+        else:
+            # invalid UTF-16 surrogate pair
+            invalid_str = b'\xff\xdf\x61\x00'
+        a = array.array('u', invalid_str)
         self.assertRaises(ValueError, a.tounicode)
         self.assertRaises(ValueError, str, a)
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list