From: Nikita Sobolev Date: Sun, 9 Oct 2022 14:02:39 +0000 (+0300) Subject: [3.10] gh-94808: Cover `PyObject_PyBytes` case with custom `__bytes__` method (GH... X-Git-Tag: v3.10.8~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ccb56804fd4a0b6d6d21325c2dd11ef16077eca6;p=thirdparty%2FPython%2Fcpython.git [3.10] gh-94808: Cover `PyObject_PyBytes` case with custom `__bytes__` method (GH-96610) (#98121) Co-authored-by: Jelle Zijlstra . Co-authored-by: Nikita Sobolev (cherry picked from commit e39ae6bef2c357a88e232dcab2e4b4c0f367544b) --- diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index c97842b5bfd2..f8a62077a4fb 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -1350,6 +1350,26 @@ class LongTest(unittest.TestCase): self.assertEqual(i, 1) self.assertEqual(getattr(i, 'foo', 'none'), 'bar') + class ValidBytes: + def __bytes__(self): + return b'\x01' + class InvalidBytes: + def __bytes__(self): + return 'abc' + class MissingBytes: ... + class RaisingBytes: + def __bytes__(self): + 1 / 0 + + for byte_order in ('big', 'little'): + self.assertEqual(int.from_bytes(ValidBytes(), byte_order), 1) + self.assertRaises( + TypeError, int.from_bytes, InvalidBytes(), byte_order) + self.assertRaises( + TypeError, int.from_bytes, MissingBytes(), byte_order) + self.assertRaises( + ZeroDivisionError, int.from_bytes, RaisingBytes(), byte_order) + def test_access_to_nonexistent_digit_0(self): # http://bugs.python.org/issue14630: A bug in _PyLong_Copy meant that # ob_digit[0] was being incorrectly accessed for instances of a