Issue19995: issue deprecation warning for non-integer values to %c, %o, %x, %X

This commit is contained in:
Ethan Furman 2014-01-11 23:20:58 -08:00
parent 57bc1e21e7
commit f9bba9c67f
4 changed files with 49 additions and 9 deletions

View file

@ -1139,6 +1139,13 @@ class UnicodeTest(string_tests.CommonTest,
self.value = float(value)
def __int__(self):
return int(self.value)
def check_depr(modifier, value):
with support.check_warnings(
("", DeprecationWarning),
quiet=False,
):
warnings.simplefilter('always')
modifier % value
pi = PsuedoFloat(3.1415)
letter_m = PsuedoInt(109)
self.assertEqual('%x' % 42, '2a')
@ -1149,11 +1156,14 @@ class UnicodeTest(string_tests.CommonTest,
self.assertEqual('%X' % letter_m, '6D')
self.assertEqual('%o' % letter_m, '155')
self.assertEqual('%c' % letter_m, 'm')
self.assertRaises(TypeError, '%x'.__mod__, pi)
self.assertRaises(TypeError, '%x'.__mod__, 3.14)
self.assertRaises(TypeError, '%X'.__mod__, 2.11)
self.assertRaises(TypeError, '%o'.__mod__, 1.79)
self.assertRaises(TypeError, '%c'.__mod__, pi)
for mod, value in (
('%x', pi),
('%x', 3.14),
('%X', 2.11),
('%o', 1.79),
('%c', pi),
):
check_depr(mod, value)
def test_formatting_with_enum(self):
# issue18780