[Python-checkins] r84470 - python/branches/py3k/Lib/test/test_bytes.py

florent.xicluna python-checkins at python.org
Fri Sep 3 22:00:37 CEST 2010


Author: florent.xicluna
Date: Fri Sep  3 22:00:37 2010
New Revision: 84470

Log:
Strengthen BytesWarning tests.

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

Modified: python/branches/py3k/Lib/test/test_bytes.py
==============================================================================
--- python/branches/py3k/Lib/test/test_bytes.py	(original)
+++ python/branches/py3k/Lib/test/test_bytes.py	Fri Sep  3 22:00:37 2010
@@ -9,15 +9,28 @@
 import re
 import sys
 import copy
-import operator
+import functools
 import pickle
 import tempfile
 import unittest
-import warnings
 import test.support
 import test.string_tests
 import test.buffer_tests
 
+
+if sys.flags.bytes_warning:
+    def check_bytes_warnings(func):
+        @functools.wraps(func)
+        def wrapper(*args, **kw):
+            with test.support.check_warnings(('', BytesWarning)):
+                return func(*args, **kw)
+        return wrapper
+else:
+    # no-op
+    def check_bytes_warnings(func):
+        return func
+
+
 class Indexable:
     def __init__(self, value=0):
         self.value = value
@@ -121,20 +134,19 @@
         self.assertFalse(b3 <  b2)
         self.assertFalse(b3 <= b2)
 
+    @check_bytes_warnings
     def test_compare_to_str(self):
-        with test.support.check_warnings():
-            warnings.simplefilter('ignore', BytesWarning)
-            # Byte comparisons with unicode should always fail!
-            # Test this for all expected byte orders and Unicode character
-            # sizes.
-            self.assertEqual(self.type2test(b"\0a\0b\0c") == "abc", False)
-            self.assertEqual(self.type2test(b"\0\0\0a\0\0\0b\0\0\0c") == "abc",
-                                False)
-            self.assertEqual(self.type2test(b"a\0b\0c\0") == "abc", False)
-            self.assertEqual(self.type2test(b"a\0\0\0b\0\0\0c\0\0\0") == "abc",
-                                False)
-            self.assertEqual(self.type2test() == str(), False)
-            self.assertEqual(self.type2test() != str(), True)
+        # Byte comparisons with unicode should always fail!
+        # Test this for all expected byte orders and Unicode character
+        # sizes.
+        self.assertEqual(self.type2test(b"\0a\0b\0c") == "abc", False)
+        self.assertEqual(self.type2test(b"\0\0\0a\0\0\0b\0\0\0c") == "abc",
+                            False)
+        self.assertEqual(self.type2test(b"a\0b\0c\0") == "abc", False)
+        self.assertEqual(self.type2test(b"a\0\0\0b\0\0\0c\0\0\0") == "abc",
+                            False)
+        self.assertEqual(self.type2test() == str(), False)
+        self.assertEqual(self.type2test() != str(), True)
 
     def test_reversed(self):
         input = list(map(ord, "Hello"))
@@ -823,17 +835,16 @@
     # Test various combinations of bytes and bytearray
     #
 
+    @check_bytes_warnings
     def test_repr_str(self):
-        with test.support.check_warnings():
-            warnings.simplefilter('ignore', BytesWarning)
-            for f in str, repr:
-                self.assertEqual(f(bytearray()), "bytearray(b'')")
-                self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')")
-                self.assertEqual(f(bytearray([0, 1, 254, 255])),
-                                 "bytearray(b'\\x00\\x01\\xfe\\xff')")
-                self.assertEqual(f(b"abc"), "b'abc'")
-                self.assertEqual(f(b"'"), '''b"'"''') # '''
-                self.assertEqual(f(b"'\""), r"""b'\'"'""") # '
+        for f in str, repr:
+            self.assertEqual(f(bytearray()), "bytearray(b'')")
+            self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')")
+            self.assertEqual(f(bytearray([0, 1, 254, 255])),
+                             "bytearray(b'\\x00\\x01\\xfe\\xff')")
+            self.assertEqual(f(b"abc"), "b'abc'")
+            self.assertEqual(f(b"'"), '''b"'"''') # '''
+            self.assertEqual(f(b"'\""), r"""b'\'"'""") # '
 
     def test_compare_bytes_to_bytearray(self):
         self.assertEqual(b"abc" == bytes(b"abc"), True)
@@ -876,15 +887,14 @@
         b = bytearray(buf)
         self.assertEqual(b, bytearray(sample))
 
+    @check_bytes_warnings
     def test_to_str(self):
-        with test.support.check_warnings():
-            warnings.simplefilter('ignore', BytesWarning)
-            self.assertEqual(str(b''), "b''")
-            self.assertEqual(str(b'x'), "b'x'")
-            self.assertEqual(str(b'\x80'), "b'\\x80'")
-            self.assertEqual(str(bytearray(b'')), "bytearray(b'')")
-            self.assertEqual(str(bytearray(b'x')), "bytearray(b'x')")
-            self.assertEqual(str(bytearray(b'\x80')), "bytearray(b'\\x80')")
+        self.assertEqual(str(b''), "b''")
+        self.assertEqual(str(b'x'), "b'x'")
+        self.assertEqual(str(b'\x80'), "b'\\x80'")
+        self.assertEqual(str(bytearray(b'')), "bytearray(b'')")
+        self.assertEqual(str(bytearray(b'x')), "bytearray(b'x')")
+        self.assertEqual(str(bytearray(b'\x80')), "bytearray(b'\\x80')")
 
     def test_literal(self):
         tests =  [
@@ -930,19 +940,18 @@
 
     def test_compare(self):
         if sys.flags.bytes_warning:
-            with test.support.check_warnings():
-                warnings.simplefilter('error', BytesWarning)
-                with self.assertRaises(BytesWarning):
-                    b'' == ''
-                with self.assertRaises(BytesWarning):
-                    b'' != ''
-                with self.assertRaises(BytesWarning):
-                    bytearray(b'') == ''
-                with self.assertRaises(BytesWarning):
-                    bytearray(b'') != ''
+            def bytes_warning():
+                return test.support.check_warnings(('', BytesWarning))
+            with bytes_warning():
+                b'' == ''
+            with bytes_warning():
+                b'' != ''
+            with bytes_warning():
+                bytearray(b'') == ''
+            with bytes_warning():
+                bytearray(b'') != ''
         else:
-            # self.skipTest("BytesWarning is needed for this test: use -bb option")
-            pass
+            self.skipTest("BytesWarning is needed for this test: use -bb option")
 
     # Optimizations:
     # __iter__? (optimization)


More information about the Python-checkins mailing list