|
9 | 9 | import re |
10 | 10 | import sys |
11 | 11 | import copy |
12 | | -import operator |
| 12 | +import functools |
13 | 13 | import pickle |
14 | 14 | import tempfile |
15 | 15 | import unittest |
16 | | -import warnings |
17 | 16 | import test.support |
18 | 17 | import test.string_tests |
19 | 18 | import test.buffer_tests |
20 | 19 |
|
| 20 | + |
| 21 | +if sys.flags.bytes_warning: |
| 22 | + def check_bytes_warnings(func): |
| 23 | + @functools.wraps(func) |
| 24 | + def wrapper(*args, **kw): |
| 25 | + with test.support.check_warnings(('', BytesWarning)): |
| 26 | + return func(*args, **kw) |
| 27 | + return wrapper |
| 28 | +else: |
| 29 | + # no-op |
| 30 | + def check_bytes_warnings(func): |
| 31 | + return func |
| 32 | + |
| 33 | + |
21 | 34 | class Indexable: |
22 | 35 | def __init__(self, value=0): |
23 | 36 | self.value = value |
@@ -121,20 +134,19 @@ def test_compare(self): |
121 | 134 | self.assertFalse(b3 < b2) |
122 | 135 | self.assertFalse(b3 <= b2) |
123 | 136 |
|
| 137 | + @check_bytes_warnings |
124 | 138 | def test_compare_to_str(self): |
125 | | - with test.support.check_warnings(): |
126 | | - warnings.simplefilter('ignore', BytesWarning) |
127 | | - # Byte comparisons with unicode should always fail! |
128 | | - # Test this for all expected byte orders and Unicode character |
129 | | - # sizes. |
130 | | - self.assertEqual(self.type2test(b"\0a\0b\0c") == "abc", False) |
131 | | - self.assertEqual(self.type2test(b"\0\0\0a\0\0\0b\0\0\0c") == "abc", |
132 | | - False) |
133 | | - self.assertEqual(self.type2test(b"a\0b\0c\0") == "abc", False) |
134 | | - self.assertEqual(self.type2test(b"a\0\0\0b\0\0\0c\0\0\0") == "abc", |
135 | | - False) |
136 | | - self.assertEqual(self.type2test() == str(), False) |
137 | | - self.assertEqual(self.type2test() != str(), True) |
| 139 | + # Byte comparisons with unicode should always fail! |
| 140 | + # Test this for all expected byte orders and Unicode character |
| 141 | + # sizes. |
| 142 | + self.assertEqual(self.type2test(b"\0a\0b\0c") == "abc", False) |
| 143 | + self.assertEqual(self.type2test(b"\0\0\0a\0\0\0b\0\0\0c") == "abc", |
| 144 | + False) |
| 145 | + self.assertEqual(self.type2test(b"a\0b\0c\0") == "abc", False) |
| 146 | + self.assertEqual(self.type2test(b"a\0\0\0b\0\0\0c\0\0\0") == "abc", |
| 147 | + False) |
| 148 | + self.assertEqual(self.type2test() == str(), False) |
| 149 | + self.assertEqual(self.type2test() != str(), True) |
138 | 150 |
|
139 | 151 | def test_reversed(self): |
140 | 152 | input = list(map(ord, "Hello")) |
@@ -823,17 +835,16 @@ class AssortedBytesTest(unittest.TestCase): |
823 | 835 | # Test various combinations of bytes and bytearray |
824 | 836 | # |
825 | 837 |
|
| 838 | + @check_bytes_warnings |
826 | 839 | def test_repr_str(self): |
827 | | - with test.support.check_warnings(): |
828 | | - warnings.simplefilter('ignore', BytesWarning) |
829 | | - for f in str, repr: |
830 | | - self.assertEqual(f(bytearray()), "bytearray(b'')") |
831 | | - self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')") |
832 | | - self.assertEqual(f(bytearray([0, 1, 254, 255])), |
833 | | - "bytearray(b'\\x00\\x01\\xfe\\xff')") |
834 | | - self.assertEqual(f(b"abc"), "b'abc'") |
835 | | - self.assertEqual(f(b"'"), '''b"'"''') # ''' |
836 | | - self.assertEqual(f(b"'\""), r"""b'\'"'""") # ' |
| 840 | + for f in str, repr: |
| 841 | + self.assertEqual(f(bytearray()), "bytearray(b'')") |
| 842 | + self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')") |
| 843 | + self.assertEqual(f(bytearray([0, 1, 254, 255])), |
| 844 | + "bytearray(b'\\x00\\x01\\xfe\\xff')") |
| 845 | + self.assertEqual(f(b"abc"), "b'abc'") |
| 846 | + self.assertEqual(f(b"'"), '''b"'"''') # ''' |
| 847 | + self.assertEqual(f(b"'\""), r"""b'\'"'""") # ' |
837 | 848 |
|
838 | 849 | def test_compare_bytes_to_bytearray(self): |
839 | 850 | self.assertEqual(b"abc" == bytes(b"abc"), True) |
@@ -876,15 +887,14 @@ def test_from_bytearray(self): |
876 | 887 | b = bytearray(buf) |
877 | 888 | self.assertEqual(b, bytearray(sample)) |
878 | 889 |
|
| 890 | + @check_bytes_warnings |
879 | 891 | def test_to_str(self): |
880 | | - with test.support.check_warnings(): |
881 | | - warnings.simplefilter('ignore', BytesWarning) |
882 | | - self.assertEqual(str(b''), "b''") |
883 | | - self.assertEqual(str(b'x'), "b'x'") |
884 | | - self.assertEqual(str(b'\x80'), "b'\\x80'") |
885 | | - self.assertEqual(str(bytearray(b'')), "bytearray(b'')") |
886 | | - self.assertEqual(str(bytearray(b'x')), "bytearray(b'x')") |
887 | | - self.assertEqual(str(bytearray(b'\x80')), "bytearray(b'\\x80')") |
| 892 | + self.assertEqual(str(b''), "b''") |
| 893 | + self.assertEqual(str(b'x'), "b'x'") |
| 894 | + self.assertEqual(str(b'\x80'), "b'\\x80'") |
| 895 | + self.assertEqual(str(bytearray(b'')), "bytearray(b'')") |
| 896 | + self.assertEqual(str(bytearray(b'x')), "bytearray(b'x')") |
| 897 | + self.assertEqual(str(bytearray(b'\x80')), "bytearray(b'\\x80')") |
888 | 898 |
|
889 | 899 | def test_literal(self): |
890 | 900 | tests = [ |
@@ -930,19 +940,18 @@ def test_return_self(self): |
930 | 940 |
|
931 | 941 | def test_compare(self): |
932 | 942 | if sys.flags.bytes_warning: |
933 | | - with test.support.check_warnings(): |
934 | | - warnings.simplefilter('error', BytesWarning) |
935 | | - with self.assertRaises(BytesWarning): |
936 | | - b'' == '' |
937 | | - with self.assertRaises(BytesWarning): |
938 | | - b'' != '' |
939 | | - with self.assertRaises(BytesWarning): |
940 | | - bytearray(b'') == '' |
941 | | - with self.assertRaises(BytesWarning): |
942 | | - bytearray(b'') != '' |
| 943 | + def bytes_warning(): |
| 944 | + return test.support.check_warnings(('', BytesWarning)) |
| 945 | + with bytes_warning(): |
| 946 | + b'' == '' |
| 947 | + with bytes_warning(): |
| 948 | + b'' != '' |
| 949 | + with bytes_warning(): |
| 950 | + bytearray(b'') == '' |
| 951 | + with bytes_warning(): |
| 952 | + bytearray(b'') != '' |
943 | 953 | else: |
944 | | - # self.skipTest("BytesWarning is needed for this test: use -bb option") |
945 | | - pass |
| 954 | + self.skipTest("BytesWarning is needed for this test: use -bb option") |
946 | 955 |
|
947 | 956 | # Optimizations: |
948 | 957 | # __iter__? (optimization) |
|
0 commit comments