summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_unicode.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-11-25 13:47:01 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-11-25 13:47:01 (GMT)
commit15095800a381a396cbc077cb5320203a8feae51a (patch)
treeba1f16c1b9be09a1f14d3af644c39e52924ee63f /Lib/test/test_unicode.py
parenta49de6be3669e4698ea55d22e0fdebb29be63f2e (diff)
downloadcpython-15095800a381a396cbc077cb5320203a8feae51a.zip
cpython-15095800a381a396cbc077cb5320203a8feae51a.tar.gz
cpython-15095800a381a396cbc077cb5320203a8feae51a.tar.bz2
Issue #24731: Fixed crash on converting objects with special methods
__bytes__, __trunc__, and __float__ returning instances of subclasses of bytes, int, and float to subclasses of bytes, int, and float correspondingly.
Diffstat (limited to 'Lib/test/test_unicode.py')
-rw-r--r--Lib/test/test_unicode.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index d664465..d54642f 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -42,6 +42,9 @@ def duplicate_string(text):
"""
return text.encode().decode()
+class StrSubclass(str):
+ pass
+
class UnicodeTest(string_tests.CommonTest,
string_tests.MixinStrUnicodeUserStringTest,
string_tests.MixinStrUnicodeTest,
@@ -1412,11 +1415,8 @@ class UnicodeTest(string_tests.CommonTest,
'unicode remains unicode'
)
- class UnicodeSubclass(str):
- pass
-
for text in ('ascii', '\xe9', '\u20ac', '\U0010FFFF'):
- subclass = UnicodeSubclass(text)
+ subclass = StrSubclass(text)
self.assertEqual(str(subclass), text)
self.assertEqual(len(subclass), len(text))
if text == 'ascii':
@@ -2169,6 +2169,9 @@ class UnicodeTest(string_tests.CommonTest,
s = str(StrSubclassToStrSubclass("foo"))
self.assertEqual(s, "foofoo")
self.assertIs(type(s), StrSubclassToStrSubclass)
+ s = StrSubclass(StrSubclassToStrSubclass("foo"))
+ self.assertEqual(s, "foofoo")
+ self.assertIs(type(s), StrSubclass)
def test_unicode_repr(self):
class s1: