예제 #1
0
 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))
예제 #2
0
 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))
예제 #3
0
 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')
예제 #4
0
 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')
예제 #5
0
 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')
예제 #6
0
    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())