From: Serhiy Storchaka Date: Thu, 9 Mar 2017 19:02:15 +0000 (+0200) Subject: [3.5] bpo-29773: Add more cases for testing string to float conversion errors. (... X-Git-Tag: v3.5.4rc1~290 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5fad493dc6634635bc6ba951b39b4d1bf552ef84;p=python [3.5] bpo-29773: Add more cases for testing string to float conversion errors. (#587) (cherry picked from commit 9e6ac83acae31de2b072e665e177db9fcdf7c049) --- diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py index cb1f6db8fc..28b6954c4d 100644 --- a/Lib/test/test_float.py +++ b/Lib/test/test_float.py @@ -98,15 +98,27 @@ class GeneralFloatCases(unittest.TestCase): self.assertEqual(float(memoryview(b'12.34')[1:4]), 2.3) def test_error_message(self): - testlist = ('\xbd', '123\xbd', ' 123 456 ') - for s in testlist: - try: + def check(s): + with self.assertRaises(ValueError, msg='float(%r)' % (s,)) as cm: float(s) - except ValueError as e: - self.assertIn(s.strip(), e.args[0]) - else: - self.fail("Expected int(%r) to raise a ValueError", s) - + self.assertEqual(str(cm.exception), + 'could not convert string to float: %r' % (s,)) + + check('\xbd') + check('123\xbd') + check(' 123 456 ') + check(b' 123 456 ') + + # non-ascii digits (error came from non-digit '!') + check('\u0663\u0661\u0664!') + # embedded NUL + check('123\x00') + check('123\x00 245') + check('123\x00245') + # byte string with embedded NUL + check(b'123\x00') + # non-UTF-8 byte string + check(b'123\xa0') @support.run_with_locale('LC_NUMERIC', 'fr_FR', 'de_DE') def test_float_with_comma(self):