def test23(self): """test CpioArchive class""" fname = self.fixture_file('cpio_archive.cpio') archive = CpioArchive(filename=fname) filenames = ['bar', 'file1', 'foo'] contents = ['File bar\nhas some\ncontent...\n', 'This is yet\nanother\nfile.\n', 'file foo\n'] for archive_file in archive: self.assertEqual(archive_file.hdr.name, filenames.pop(0)) self.assertEqual(archive_file.read(), contents.pop(0)) self.assertEqual(archive.filenames(), ['bar', 'file1', 'foo']) self.assertEqual(len(archive.files()), 3) # read file bar again (no content because the whole file was already # read) archive_file = archive.find('bar') self.assertIsNotNone(archive_file) self.assertEqual(archive_file.read(), '') # try to find non existent file self.assertIsNone(archive.find('unknown')) self.assertEqual(archive.magic, '070701')
def test24(self): """test CpioArchive class unseekable input 1""" fname = self.fixture_file('cpio_archive.cpio') sio = StringIO(open(fname, 'r').read()) sio.seek = None archive = CpioArchive(fobj=sio) filenames = ['bar', 'file1', 'foo'] contents = ['File bar\nhas some\ncontent...\n', 'This is yet\nanother\nfile.\n', 'file foo\n'] for archive_file in archive: self.assertEqual(archive_file.hdr.name, filenames.pop(0)) self.assertEqual(archive_file.read(), contents.pop(0)) self.assertEqual(archive.filenames(), ['bar', 'file1', 'foo']) self.assertEqual(len(archive.files()), 3) # read file bar again archive_file = archive.find('bar') self.assertIsNotNone(archive_file) # the empty str because the file was already completely read # => no seek is made and no IOError is raised self.assertEqual(archive_file.read(), '') # try to find non existent file self.assertIsNone(archive.find('unknown')) self.assertEqual(archive.magic, '070701')