mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
bpo-34953: Implement mmap.mmap.__repr__
(GH-9891)
This commit is contained in:
parent
9c11029bb4
commit
d8ca2354ed
2 changed files with 93 additions and 12 deletions
|
@ -740,6 +740,42 @@ class MmapTests(unittest.TestCase):
|
|||
# See bpo-34754 for details.
|
||||
self.assertRaises(OSError, mm.flush, 1, len(b'python'))
|
||||
|
||||
def test_repr(self):
|
||||
open_mmap_repr_pat = re.compile(
|
||||
r"<mmap.mmap closed=False, "
|
||||
r"access=(?P<access>\S+), "
|
||||
r"length=(?P<length>\d+), "
|
||||
r"pos=(?P<pos>\d+), "
|
||||
r"offset=(?P<offset>\d+)>")
|
||||
closed_mmap_repr_pat = re.compile(r"<mmap.mmap closed=True>")
|
||||
mapsizes = (50, 100, 1_000, 1_000_000, 10_000_000)
|
||||
offsets = tuple((mapsize // 2 // mmap.ALLOCATIONGRANULARITY)
|
||||
* mmap.ALLOCATIONGRANULARITY for mapsize in mapsizes)
|
||||
for offset, mapsize in zip(offsets, mapsizes):
|
||||
data = b'a' * mapsize
|
||||
length = mapsize - offset
|
||||
accesses = ('ACCESS_DEFAULT', 'ACCESS_READ',
|
||||
'ACCESS_COPY', 'ACCESS_WRITE')
|
||||
positions = (0, length//10, length//5, length//4)
|
||||
with open(TESTFN, "wb+") as fp:
|
||||
fp.write(data)
|
||||
fp.flush()
|
||||
for access, pos in itertools.product(accesses, positions):
|
||||
accint = getattr(mmap, access)
|
||||
with mmap.mmap(fp.fileno(),
|
||||
length,
|
||||
access=accint,
|
||||
offset=offset) as mm:
|
||||
mm.seek(pos)
|
||||
match = open_mmap_repr_pat.match(repr(mm))
|
||||
self.assertIsNotNone(match)
|
||||
self.assertEqual(match.group('access'), access)
|
||||
self.assertEqual(match.group('length'), str(length))
|
||||
self.assertEqual(match.group('pos'), str(pos))
|
||||
self.assertEqual(match.group('offset'), str(offset))
|
||||
match = closed_mmap_repr_pat.match(repr(mm))
|
||||
self.assertIsNotNone(match)
|
||||
|
||||
@unittest.skipUnless(hasattr(mmap.mmap, 'madvise'), 'needs madvise')
|
||||
def test_madvise(self):
|
||||
size = 2 * PAGESIZE
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue