示例#1
0
 def test5(self):
     """test FileWrapper with unseekable file object"""
     sio = StringIO('Simple test file')
     sio.seek = None
     f = FileWrapper(fobj=sio, use_mmap=False)
     self.assertFalse(f.is_seekable())
     self.assertFalse(isinstance(f._fobj, mmap.mmap))
     self.assertEqual(f.tell(), 0)
     self.assertEqual(f.read(3), 'Sim')
     self.assertEqual(f.tell(), 3)
     # seeking backward is not supposed to work
     self.assertRaises(IOError, f.seek, 0, os.SEEK_SET)
     self.assertRaises(IOError, f.seek, -2, os.SEEK_SET)
     self.assertRaises(IOError, f.seek, -2, os.SEEK_CUR)
     self.assertRaises(IOError, f.seek, 5, os.SEEK_END)
     # seeking forward (absolute) does work (skip 'pl')
     f.seek(5, os.SEEK_SET)
     self.assertEqual(f.read(3), 'e t')
     # seeking forward (relative) does work (skip 'est')
     f.seek(3, os.SEEK_CUR)
     # read the rest of the file
     self.assertEqual(f.read(), ' file')
     f.close()
     # sio should not be closed
     self.assertFalse(sio.closed)
示例#2
0
 def test29(self):
     """test NewAsciiReader: modify FileWrapper while reading"""
     fname = self.fixture_file('new_ascii_reader1.cpio')
     f = FileWrapper(filename=fname)
     archive_reader = NewAsciiReader(f)
     self.assertIsNotNone(archive_reader.next_header())
     # seeking _after_ the calculated next header position is not
     # allowed (even if the file is seekable)
     # next header position: 156
     f.seek(158, os.SEEK_SET)
     self.assertRaises(CpioError, archive_reader.next_header)
示例#3
0
 def test1(self):
     """test FileWrapper with filename (no mmap)"""
     fname = self.fixture_file('filewrapper1.txt')
     f = FileWrapper(filename=fname, use_mmap=False)
     self.assertFalse(isinstance(f._fobj, mmap.mmap))
     self.assertTrue(f.is_seekable())
     self.assertEqual(f.tell(), 0)
     self.assertEqual(f.read(1), 'T')
     self.assertEqual(f.tell(), 1)
     # seek to position 0 again
     f.seek(0)
     self.assertEqual(f.read(5), 'This ')
     self.assertEqual(f.tell(), 5)
     # read rest of the file
     self.assertEqual(f.read(), 'is a simple\ntext file.\n')
     f.close()
示例#4
0
 def test7(self):
     """test FileWrapper's peek method"""
     fname = self.fixture_file('filewrapper1.txt')
     with open(fname, 'r') as fobj:
         f = FileWrapper(fobj=fobj, use_mmap=False)
         self.assertFalse(isinstance(f._fobj, mmap.mmap))
         self.assertEqual(f.peek(3), 'Thi')
         self.assertEqual(f.tell(), 0)
         # seeking is not allowed unless all peek'ed bytes are read
         self.assertRaises(IOError, f.seek, 8, os.SEEK_SET)
         self.assertEqual(f.read(2), 'Th')
         self.assertEqual(f.tell(), 2)
         # seek is still not possible (1 peek byte left)
         self.assertRaises(IOError, f.seek, 8, os.SEEK_SET)
         self.assertEqual(f.read(2), 'is')
         self.assertEqual(f.tell(), 4)
         # seek is possible
         f.seek(8, os.SEEK_SET)
         self.assertEqual(f.read(), 'a simple\ntext file.\n')
示例#5
0
 def test2(self):
     """test FileWrapper with file object (no mmap)"""
     fname = self.fixture_file('filewrapper1.txt')
     with open(fname, 'r') as fobj:
         f = FileWrapper(fobj=fobj, use_mmap=False)
         self.assertFalse(isinstance(f._fobj, mmap.mmap))
         self.assertTrue(f.is_seekable())
         self.assertEqual(f.tell(), 0)
         self.assertEqual(f.read(1), 'T')
         self.assertEqual(f.tell(), 1)
         # seek to position 0 again
         f.seek(-1, os.SEEK_CUR)
         self.assertEqual(f.tell(), 0)
         self.assertEqual(f.read(5), 'This ')
         self.assertEqual(f.tell(), 5)
         # read rest of the file
         self.assertEqual(f.read(), 'is a simple\ntext file.\n')
         f.close()
         # the fobj should not be closed in this case
         self.assertFalse(fobj.closed)