Kaydet (Commit) a146bef0 authored tarafından Serhiy Storchaka's avatar Serhiy Storchaka

Catch deprecation warnings emitted when non-integers are formatted with %c, %o

and %x (introduced in issue #19995).
üst 303718c3
...@@ -1179,6 +1179,7 @@ class MixinStrUnicodeUserStringTest: ...@@ -1179,6 +1179,7 @@ class MixinStrUnicodeUserStringTest:
self.checkraises(TypeError, 'abc', '__mod__') self.checkraises(TypeError, 'abc', '__mod__')
self.checkraises(TypeError, '%(foo)s', '__mod__', 42) self.checkraises(TypeError, '%(foo)s', '__mod__', 42)
self.checkraises(TypeError, '%s%s', '__mod__', (42,)) self.checkraises(TypeError, '%s%s', '__mod__', (42,))
with self.assertWarns(DeprecationWarning):
self.checkraises(TypeError, '%c', '__mod__', (None,)) self.checkraises(TypeError, '%c', '__mod__', (None,))
self.checkraises(ValueError, '%(foo', '__mod__', {}) self.checkraises(ValueError, '%(foo', '__mod__', {})
self.checkraises(TypeError, '%(foo)s %(bar)s', '__mod__', ('foo', 42)) self.checkraises(TypeError, '%(foo)s %(bar)s', '__mod__', ('foo', 42))
......
...@@ -142,6 +142,7 @@ class FormatTest(unittest.TestCase): ...@@ -142,6 +142,7 @@ class FormatTest(unittest.TestCase):
testformat("%#+027.23X", big, "+0X0001234567890ABCDEF12345") testformat("%#+027.23X", big, "+0X0001234567890ABCDEF12345")
# same, except no 0 flag # same, except no 0 flag
testformat("%#+27.23X", big, " +0X001234567890ABCDEF12345") testformat("%#+27.23X", big, " +0X001234567890ABCDEF12345")
with self.assertWarns(DeprecationWarning):
testformat("%x", float(big), "123456_______________", 6) testformat("%x", float(big), "123456_______________", 6)
big = 0o12345670123456701234567012345670 # 32 octal digits big = 0o12345670123456701234567012345670 # 32 octal digits
testformat("%o", big, "12345670123456701234567012345670") testformat("%o", big, "12345670123456701234567012345670")
...@@ -182,6 +183,7 @@ class FormatTest(unittest.TestCase): ...@@ -182,6 +183,7 @@ class FormatTest(unittest.TestCase):
testformat("%034.33o", big, "0012345670123456701234567012345670") testformat("%034.33o", big, "0012345670123456701234567012345670")
# base marker shouldn't change that # base marker shouldn't change that
testformat("%0#34.33o", big, "0o012345670123456701234567012345670") testformat("%0#34.33o", big, "0o012345670123456701234567012345670")
with self.assertWarns(DeprecationWarning):
testformat("%o", float(big), "123456__________________________", 6) testformat("%o", float(big), "123456__________________________", 6)
# Some small ints, in both Python int and flavors). # Some small ints, in both Python int and flavors).
testformat("%d", 42, "42") testformat("%d", 42, "42")
...@@ -193,6 +195,7 @@ class FormatTest(unittest.TestCase): ...@@ -193,6 +195,7 @@ class FormatTest(unittest.TestCase):
testformat("%#x", 1, "0x1") testformat("%#x", 1, "0x1")
testformat("%#X", 1, "0X1") testformat("%#X", 1, "0X1")
testformat("%#X", 1, "0X1") testformat("%#X", 1, "0X1")
with self.assertWarns(DeprecationWarning):
testformat("%#x", 1.0, "0x1") testformat("%#x", 1.0, "0x1")
testformat("%#o", 1, "0o1") testformat("%#o", 1, "0o1")
testformat("%#o", 1, "0o1") testformat("%#o", 1, "0o1")
...@@ -210,11 +213,13 @@ class FormatTest(unittest.TestCase): ...@@ -210,11 +213,13 @@ class FormatTest(unittest.TestCase):
testformat("%x", -0x42, "-42") testformat("%x", -0x42, "-42")
testformat("%x", 0x42, "42") testformat("%x", 0x42, "42")
testformat("%x", -0x42, "-42") testformat("%x", -0x42, "-42")
with self.assertWarns(DeprecationWarning):
testformat("%x", float(0x42), "42") testformat("%x", float(0x42), "42")
testformat("%o", 0o42, "42") testformat("%o", 0o42, "42")
testformat("%o", -0o42, "-42") testformat("%o", -0o42, "-42")
testformat("%o", 0o42, "42") testformat("%o", 0o42, "42")
testformat("%o", -0o42, "-42") testformat("%o", -0o42, "-42")
with self.assertWarns(DeprecationWarning):
testformat("%o", float(0o42), "42") testformat("%o", float(0o42), "42")
testformat("%r", "\u0378", "'\\u0378'") # non printable testformat("%r", "\u0378", "'\\u0378'") # non printable
testformat("%a", "\u0378", "'\\u0378'") # non printable testformat("%a", "\u0378", "'\\u0378'") # non printable
......
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