Skip to content

Commit

Permalink
[3.10] gh-94808: Cover PyObject_PyBytes case with custom `__bytes__…
Browse files Browse the repository at this point in the history
…` method (GH-96610) (#98121)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>.
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>

(cherry picked from commit e39ae6b)
  • Loading branch information
sobolevn authored Oct 9, 2022
1 parent 4d7d91f commit ccb5680
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions Lib/test/test_long.py
Original file line number Diff line number Diff line change
Expand Up @@ -1350,6 +1350,26 @@ def __init__(self, value):
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
Expand Down

0 comments on commit ccb5680

Please sign in to comment.