]> granicus.if.org Git - python/commitdiff
[3.5] bpo-29773: Add more cases for testing string to float conversion errors. (...
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 9 Mar 2017 19:02:15 +0000 (21:02 +0200)
committerGitHub <noreply@github.com>
Thu, 9 Mar 2017 19:02:15 +0000 (21:02 +0200)
(cherry picked from commit 9e6ac83acae31de2b072e665e177db9fcdf7c049)

Lib/test/test_float.py

index cb1f6db8fc76279a1954af4b233f37c940ed5f79..28b6954c4d59235c12cb619bec3868dd6b6f5c05 100644 (file)
@@ -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):