(file_factory, expected_error=None)
| 42 | |
| 43 | |
| 44 | def check_large_seeks(file_factory, expected_error=None): |
| 45 | if sys.platform in ('win32', 'darwin', 'emscripten'): |
| 46 | pytest.skip("need sparse file support") |
| 47 | try: |
| 48 | filename = tempfile.mktemp(prefix='test_io') |
| 49 | with open(filename, 'wb') as f: |
| 50 | f.truncate(2 ** 32 + 10) |
| 51 | f.seek(2 ** 32 + 5) |
| 52 | f.write(b'mark\n') |
| 53 | if expected_error: |
| 54 | with expected_error: |
| 55 | file_factory(filename) |
| 56 | else: |
| 57 | with file_factory(filename) as f: |
| 58 | assert f.size() == 2 ** 32 + 10 |
| 59 | assert f.seek(2 ** 32 + 5) == 2 ** 32 + 5 |
| 60 | assert f.tell() == 2 ** 32 + 5 |
| 61 | assert f.read(5) == b'mark\n' |
| 62 | assert f.tell() == 2 ** 32 + 10 |
| 63 | finally: |
| 64 | os.unlink(filename) |
| 65 | |
| 66 | |
| 67 | @contextmanager |
no test coverage detected