def test16(self): """test CpioFile's copyin method unseekable fobj (dest is directory)""" # identical to test14 except that the input is not seekable dest = self.fixture_file('copyin') os.mkdir(dest) fname = self.fixture_file('new_ascii_reader3.cpio') st = os.stat(fname) sio = StringIO(open(fname, 'r').read()) f = FileWrapper(fobj=sio) archive_reader = NewAsciiReader(f) # copyin file foo archive_file = archive_reader.next_file() archive_file.copyin(dest) fname = self.fixture_file('copyin', archive_file.hdr.name) self.assertTrue(os.path.isfile(fname)) self.assertEqualFile('file foo\n', fname) # check mode, mtime, uid and gid st = os.stat(fname) self.assertEqual(st.st_mode, 33188) self.assertEqual(st.st_mtime, 1340493596) self.assertEqual(st.st_uid, uid(1000)) self.assertEqual(st.st_gid, gid(100)) # copyin file foobar archive_file = archive_reader.next_file() archive_file.copyin(dest) fname = self.fixture_file('copyin', archive_file.hdr.name) self.assertTrue(os.path.isfile(fname)) self.assertEqualFile('This is file\nbar.\n', fname) # check mode, mtime, uid and gid st = os.stat(fname) self.assertEqual(st.st_mode, 33188) self.assertEqual(st.st_mtime, 1340493602) self.assertEqual(st.st_uid, uid(1000)) self.assertEqual(st.st_gid, gid(100))
def test15(self): """test CpioFile's copyin method (dest is directory)""" dest = self.fixture_file('copyin') os.mkdir(dest) fname = self.fixture_file('new_ascii_reader3.cpio') f = FileWrapper(filename=fname) archive_reader = NewAsciiReader(f) # copyin file foo archive_file = archive_reader.next_file() archive_file.copyin(dest) fname = self.fixture_file('copyin', archive_file.hdr.name) self.assertTrue(os.path.isfile(fname)) self.assertEqualFile('file foo\n', fname) # check mode, mtime, uid and gid st = os.stat(fname) self.assertEqual(st.st_mode, 33188) self.assertEqual(st.st_mtime, 1340493596) self.assertEqual(st.st_uid, uid(1000)) self.assertEqual(st.st_gid, gid(100)) # copyin file foobar archive_file = archive_reader.next_file() archive_file.copyin(dest) fname = self.fixture_file('copyin', archive_file.hdr.name) self.assertTrue(os.path.isfile(fname)) self.assertEqualFile('This is file\nbar.\n', fname) # check mode, mtime, uid and gid st = os.stat(fname) self.assertEqual(st.st_mode, 33188) self.assertEqual(st.st_mtime, 1340493602) self.assertEqual(st.st_uid, uid(1000)) self.assertEqual(st.st_gid, gid(100))
def test17(self): """test CpioFile's copyin method (dest is a file-like object)""" fname = self.fixture_file('new_ascii_reader3.cpio') f = FileWrapper(filename=fname) archive_reader = NewAsciiReader(f) # copyin file foo sio = StringIO() archive_file = archive_reader.next_file() archive_file.copyin(sio) self.assertEqual(sio.getvalue(), 'file foo\n') # copyin file foobar sio = StringIO() archive_file = archive_reader.next_file() archive_file.copyin(sio) self.assertEqual(sio.getvalue(), 'This is file\nbar.\n')
def test13(self): """test NewAsciiReader read files""" fname = self.fixture_file('new_ascii_reader3.cpio') f = FileWrapper(filename=fname) archive_reader = NewAsciiReader(f) foo_file = archive_reader.next_file() self.assertEqual(foo_file.hdr.name, 'foo') foobar_file = archive_reader.next_file() self.assertEqual(foobar_file.hdr.name, 'foobar') # read around in both files self.assertEqual(foobar_file.read(7), 'This is') self.assertEqual(foo_file.read(3), 'fil') self.assertEqual(foobar_file.read(6), ' file\n') # read rest of file foo self.assertEqual(foo_file.read(), 'e foo\n') # read rest of file foobar self.assertEqual(foobar_file.read(), 'bar.\n')
def test14(self): """test NewAsciiReader read files (unseekable fobj)""" # the read sequence is identical to test12 # but the expected results are different because the fobj # is not seekable fname = self.fixture_file('new_ascii_reader3.cpio') sio = StringIO(open(fname, 'r').read()) sio.seek = None f = FileWrapper(fobj=sio) self.assertFalse(f.is_seekable()) archive_reader = NewAsciiReader(f) foo_file = archive_reader.next_file() self.assertEqual(foo_file.hdr.name, 'foo') foobar_file = archive_reader.next_file() self.assertEqual(foobar_file.hdr.name, 'foobar') # read around in both files self.assertEqual(foobar_file.read(7), 'This is') self.assertRaises(IOError, foo_file.read, 3) self.assertEqual(foobar_file.read(6), ' file\n') # read rest of file foo self.assertRaises(IOError, foo_file.read) # read rest of file foobar self.assertEqual(foobar_file.read(), 'bar.\n')
def test12(self): """test NewAsciiReader read file content""" # identical to test10 but this time we read the file contents fname = self.fixture_file('new_ascii_reader3.cpio') f = FileWrapper(filename=fname) archive_reader = NewAsciiReader(f) # check file foo archv_file = archive_reader.next_file() self.assertEqual(archv_file.hdr.magic, '070701') self.assertEqual(archv_file.hdr.ino, 1788176) self.assertEqual(archv_file.hdr.mode, 33188) self.assertEqual(archv_file.hdr.uid, 1000) self.assertEqual(archv_file.hdr.gid, 100) self.assertEqual(archv_file.hdr.nlink, 1) self.assertEqual(archv_file.hdr.mtime, 1340493596) self.assertEqual(archv_file.hdr.filesize, 9) self.assertEqual(archv_file.hdr.dev_maj, 8) self.assertEqual(archv_file.hdr.dev_min, 10) self.assertEqual(archv_file.hdr.rdev_maj, 0) self.assertEqual(archv_file.hdr.rdev_min, 0) self.assertEqual(archv_file.hdr.namesize, 4) self.assertEqual(archv_file.hdr.chksum, 0) self.assertEqual(archv_file.hdr.name, 'foo') # read file content self.assertEqual(archv_file.read(4), 'file') self.assertEqual(archv_file.read(), ' foo\n') # self.assertTrue(archv_file.hdr.is_regular_file()) # check file foobar archv_file = archive_reader.next_file() self.assertEqual(archv_file.hdr.magic, '070701') self.assertEqual(archv_file.hdr.ino, 1788110) self.assertEqual(archv_file.hdr.mode, 33188) self.assertEqual(archv_file.hdr.uid, 1000) self.assertEqual(archv_file.hdr.gid, 100) self.assertEqual(archv_file.hdr.nlink, 1) self.assertEqual(archv_file.hdr.mtime, 1340493602) self.assertEqual(archv_file.hdr.filesize, 18) self.assertEqual(archv_file.hdr.dev_maj, 8) self.assertEqual(archv_file.hdr.dev_min, 10) self.assertEqual(archv_file.hdr.rdev_maj, 0) self.assertEqual(archv_file.hdr.rdev_min, 0) self.assertEqual(archv_file.hdr.namesize, 7) self.assertEqual(archv_file.hdr.chksum, 0) self.assertEqual(archv_file.hdr.name, 'foobar') # read file content self.assertEqual(archv_file.read(13), 'This is file\n') self.assertEqual(archv_file.read(), 'bar.\n') # self.assertTrue(archv_file.hdr.is_regular_file()) # next header is trailer archv_file = archive_reader.next_file() self.assertEqual(archv_file.hdr.magic, '070701') self.assertEqual(archv_file.hdr.ino, 0) self.assertEqual(archv_file.hdr.mode, 0) self.assertEqual(archv_file.hdr.uid, 0) self.assertEqual(archv_file.hdr.gid, 0) self.assertEqual(archv_file.hdr.nlink, 1) self.assertEqual(archv_file.hdr.mtime, 0) self.assertEqual(archv_file.hdr.filesize, 0) self.assertEqual(archv_file.hdr.dev_maj, 0) self.assertEqual(archv_file.hdr.dev_min, 0) self.assertEqual(archv_file.hdr.rdev_maj, 0) self.assertEqual(archv_file.hdr.rdev_min, 0) self.assertEqual(archv_file.hdr.namesize, 11) self.assertEqual(archv_file.hdr.chksum, 0) self.assertEqual(archv_file.hdr.name, 'TRAILER!!!') # self.assertFalse(archv_file.hdr.is_regular_file()) # no more headers available self.assertIsNone(archive_reader.next_file())