diff options
Diffstat (limited to 'Lib/test/test_math.py')
-rw-r--r-- | Lib/test/test_math.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index cc39402..4b848a5 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -1992,6 +1992,22 @@ class MathTests(unittest.TestCase): with self.subTest(x=x): self.assertEqual(math.ulp(-x), math.ulp(x)) + def test_issue39871(self): + # A SystemError should not be raised if the first arg to atan2(), + # copysign(), or remainder() cannot be converted to a float. + class F: + def __float__(self): + self.converted = True + 1/0 + for func in math.atan2, math.copysign, math.remainder: + y = F() + with self.assertRaises(TypeError): + func("not a number", y) + + # There should not have been any attempt to convert the second + # argument to a float. + self.assertFalse(getattr(y, "converted", False)) + # Custom assertions. def assertIsNaN(self, value): |