Kaydet (Commit) edf5f0dd authored tarafından Florent Xicluna's avatar Florent Xicluna

Strengthen BytesWarning tests.

üst 764d612f
...@@ -9,15 +9,28 @@ import os ...@@ -9,15 +9,28 @@ import os
import re import re
import sys import sys
import copy import copy
import operator import functools
import pickle import pickle
import tempfile import tempfile
import unittest import unittest
import warnings
import test.support import test.support
import test.string_tests import test.string_tests
import test.buffer_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: class Indexable:
def __init__(self, value=0): def __init__(self, value=0):
self.value = value self.value = value
...@@ -121,9 +134,8 @@ class BaseBytesTest(unittest.TestCase): ...@@ -121,9 +134,8 @@ class BaseBytesTest(unittest.TestCase):
self.assertFalse(b3 < b2) self.assertFalse(b3 < b2)
self.assertFalse(b3 <= b2) self.assertFalse(b3 <= b2)
@check_bytes_warnings
def test_compare_to_str(self): def test_compare_to_str(self):
with test.support.check_warnings():
warnings.simplefilter('ignore', BytesWarning)
# Byte comparisons with unicode should always fail! # Byte comparisons with unicode should always fail!
# Test this for all expected byte orders and Unicode character # Test this for all expected byte orders and Unicode character
# sizes. # sizes.
...@@ -823,9 +835,8 @@ class AssortedBytesTest(unittest.TestCase): ...@@ -823,9 +835,8 @@ class AssortedBytesTest(unittest.TestCase):
# Test various combinations of bytes and bytearray # Test various combinations of bytes and bytearray
# #
@check_bytes_warnings
def test_repr_str(self): def test_repr_str(self):
with test.support.check_warnings():
warnings.simplefilter('ignore', BytesWarning)
for f in str, repr: for f in str, repr:
self.assertEqual(f(bytearray()), "bytearray(b'')") self.assertEqual(f(bytearray()), "bytearray(b'')")
self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')") self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')")
...@@ -876,9 +887,8 @@ class AssortedBytesTest(unittest.TestCase): ...@@ -876,9 +887,8 @@ class AssortedBytesTest(unittest.TestCase):
b = bytearray(buf) b = bytearray(buf)
self.assertEqual(b, bytearray(sample)) self.assertEqual(b, bytearray(sample))
@check_bytes_warnings
def test_to_str(self): def test_to_str(self):
with test.support.check_warnings():
warnings.simplefilter('ignore', BytesWarning)
self.assertEqual(str(b''), "b''") self.assertEqual(str(b''), "b''")
self.assertEqual(str(b'x'), "b'x'") self.assertEqual(str(b'x'), "b'x'")
self.assertEqual(str(b'\x80'), "b'\\x80'") self.assertEqual(str(b'\x80'), "b'\\x80'")
...@@ -930,19 +940,18 @@ class AssortedBytesTest(unittest.TestCase): ...@@ -930,19 +940,18 @@ class AssortedBytesTest(unittest.TestCase):
def test_compare(self): def test_compare(self):
if sys.flags.bytes_warning: if sys.flags.bytes_warning:
with test.support.check_warnings(): def bytes_warning():
warnings.simplefilter('error', BytesWarning) return test.support.check_warnings(('', BytesWarning))
with self.assertRaises(BytesWarning): with bytes_warning():
b'' == '' b'' == ''
with self.assertRaises(BytesWarning): with bytes_warning():
b'' != '' b'' != ''
with self.assertRaises(BytesWarning): with bytes_warning():
bytearray(b'') == '' bytearray(b'') == ''
with self.assertRaises(BytesWarning): with bytes_warning():
bytearray(b'') != '' bytearray(b'') != ''
else: else:
# self.skipTest("BytesWarning is needed for this test: use -bb option") self.skipTest("BytesWarning is needed for this test: use -bb option")
pass
# Optimizations: # Optimizations:
# __iter__? (optimization) # __iter__? (optimization)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment