From: Nikita Sobolev Date: Thu, 6 Oct 2022 12:16:16 +0000 (+0300) Subject: gh-94808: Cover `PyObject_PyBytes` case with custom `__bytes__` method (#96610) X-Git-Tag: v3.12.0a1~227 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e39ae6bef2c357a88e232dcab2e4b4c0f367544b;p=thirdparty%2FPython%2Fcpython.git gh-94808: Cover `PyObject_PyBytes` case with custom `__bytes__` method (#96610) Co-authored-by: Jelle Zijlstra --- diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index d092e0176c26..b6407b5a7c88 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -1518,6 +1518,22 @@ 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 + + self.assertEqual(int.from_bytes(ValidBytes()), 1) + self.assertRaises(TypeError, int.from_bytes, InvalidBytes()) + self.assertRaises(TypeError, int.from_bytes, MissingBytes()) + self.assertRaises(ZeroDivisionError, int.from_bytes, RaisingBytes()) + @support.cpython_only def test_from_bytes_small(self): # bpo-46361