mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Close #10142: Support for SEEK_HOLE/SEEK_DATA
This commit is contained in:
parent
790a9b4c19
commit
2b47f0a23f
8 changed files with 60 additions and 12 deletions
|
@ -1009,6 +1009,26 @@ class PosixTester(unittest.TestCase):
|
|||
posix.RTLD_GLOBAL
|
||||
posix.RTLD_LOCAL
|
||||
|
||||
@unittest.skipUnless('PC_MIN_HOLE_SIZE' in os.pathconf_names,
|
||||
"test needs an OS that reports file holes")
|
||||
def test_fs_holes(self) :
|
||||
# Even if the filesystem doesn't report holes,
|
||||
# if the OS supports it the SEEK_* constants
|
||||
# will be defined and will have a consistent
|
||||
# behaviour:
|
||||
# os.SEEK_DATA = current position
|
||||
# os.SEEK_HOLE = end of file position
|
||||
with open(support.TESTFN, 'r+b') as fp :
|
||||
fp.write(b"hello")
|
||||
fp.flush()
|
||||
size = fp.tell()
|
||||
fno = fp.fileno()
|
||||
for i in range(size) :
|
||||
self.assertEqual(i, os.lseek(fno, i, os.SEEK_DATA))
|
||||
self.assertLessEqual(size, os.lseek(fno, i, os.SEEK_HOLE))
|
||||
self.assertRaises(OSError, os.lseek, fno, size, os.SEEK_DATA)
|
||||
self.assertRaises(OSError, os.lseek, fno, size, os.SEEK_HOLE)
|
||||
|
||||
class PosixGroupsTester(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue