MCPcopy Index your code
hub / github.com/python/cpython / test_trackfd_parameter

Method test_trackfd_parameter

Lib/test/test_mmap.py:269–305  ·  view source on GitHub ↗
(self, close_original_fd)

Source from the content-addressed store, hash-verified

267
268 @support.subTests('close_original_fd', (True, False))
269 def test_trackfd_parameter(self, close_original_fd):
270 size = 64
271 with open(TESTFN, "wb") as f:
272 f.write(b"a"*size)
273 with open(TESTFN, "r+b") as f:
274 with mmap.mmap(f.fileno(), size, trackfd=False) as m:
275 if close_original_fd:
276 f.close()
277 self.assertEqual(len(m), size)
278 with self.assertRaises(ValueError):
279 m.size()
280 if hasattr(m, 'resize'):
281 with self.assertRaises(ValueError):
282 m.resize(size * 2)
283 with self.assertRaises(ValueError):
284 m.resize(size // 2)
285 self.assertIs(m.closed, False)
286
287 # Smoke-test other API
288 m.write_byte(ord('X'))
289 m[2] = ord('Y')
290 m.flush()
291 with open(TESTFN, "rb") as f:
292 self.assertEqual(f.read(4), b'XaYa')
293 self.assertEqual(m.tell(), 1)
294 m.seek(0)
295 self.assertEqual(m.tell(), 0)
296 self.assertEqual(m.read_byte(), ord('X'))
297
298 if os.name == 'nt' and not close_original_fd:
299 self.assertRaises(PermissionError, os.rename, TESTFN, TESTFN+'1')
300 else:
301 os.rename(TESTFN, TESTFN+'1')
302 os.rename(TESTFN+'1', TESTFN)
303
304 self.assertIs(m.closed, True)
305 self.assertEqual(os.stat(TESTFN).st_size, size)
306
307 def test_trackfd_neg1(self):
308 size = 64

Callers

nothing calls this directly

Calls 15

openFunction · 0.50
writeMethod · 0.45
filenoMethod · 0.45
closeMethod · 0.45
assertEqualMethod · 0.45
assertRaisesMethod · 0.45
sizeMethod · 0.45
resizeMethod · 0.45
assertIsMethod · 0.45
flushMethod · 0.45
readMethod · 0.45
tellMethod · 0.45

Tested by

no test coverage detected