Issue #26257: Eliminate buffer_tests.py and fix ByteArrayAsStringTest

ByteArrayAsStringTest.fixtype() was converting test data to bytes, not byte-
array, therefore many of the test cases inherited in this class were not
actually being run on the bytearray type.

The tests in buffer_tests.py were redundant with methods in string_tests
.MixinStrUnicodeUserStringTest and string_tests.CommonTest. These methods are
now moved into string_tests.BaseTest, where they will also get run for bytes
and bytearray.

This change also moves test_additional_split(), test_additional_rsplit(), and
test_strip() from CommonTest to BaseTest, meaning these tests are now run for
bytes and bytearray. I plan to eliminate redundancies with existing tests in
test_bytes.py soon.
This commit is contained in:
Martin Panter 2016-04-06 06:37:17 +00:00
parent b0660582cc
commit 152a19c6bd
4 changed files with 54 additions and 229 deletions

View file

@ -1,8 +1,7 @@
"""Unit tests for the bytes and bytearray types.
XXX This is a mess. Common tests should be moved to buffer_tests.py,
which itself ought to be unified with string_tests.py (and the latter
should be modernized).
XXX This is a mess. Common tests should be unified with string_tests.py (and
the latter should be modernized).
"""
import os
@ -16,7 +15,6 @@ import unittest
import test.support
import test.string_tests
import test.buffer_tests
import test.list_tests
from test.support import bigaddrspacetest, MAX_Py_ssize_t
@ -1480,8 +1478,7 @@ class AssortedBytesTest(unittest.TestCase):
# the rest that make sense (the code can be cleaned up to use modern
# unittest methods at the same time).
class BytearrayPEP3137Test(unittest.TestCase,
test.buffer_tests.MixinBytesBufferCommonTests):
class BytearrayPEP3137Test(unittest.TestCase):
def marshal(self, x):
return bytearray(x)
@ -1511,16 +1508,16 @@ class BytearrayPEP3137Test(unittest.TestCase,
class FixedStringTest(test.string_tests.BaseTest):
def fixtype(self, obj):
if isinstance(obj, str):
return obj.encode("utf-8")
return self.type2test(obj.encode("utf-8"))
return super().fixtype(obj)
contains_bytes = True
class ByteArrayAsStringTest(FixedStringTest, unittest.TestCase):
type2test = bytearray
contains_bytes = True
class BytesAsStringTest(FixedStringTest, unittest.TestCase):
type2test = bytes
contains_bytes = True
class SubclassTest: