示例#1
0
  def _Open(self, path_spec, mode='rb'):
    """Opens the file system defined by path specification.

    Args:
      path_spec (PathSpec): path specification.
      mode (Optional[str]): file access mode. The default is 'rb' which
          represents read-only binary.

    Raises:
      AccessError: if the access to open the file was denied.
      IOError: if the file system could not be opened.
      PathSpecError: if the path specification is incorrect.
      ValueError: if the path specification is invalid.
    """
    if not path_spec.HasParent():
      raise errors.PathSpecError(
          'Unsupported path specification without parent.')

    file_object = resolver.Resolver.OpenFileObject(
        path_spec.parent, resolver_context=self._resolver_context)

    cpio_archive_file = cpio.CPIOArchiveFile()
    try:
      cpio_archive_file.Open(file_object)
    except:
      file_object.close()
      raise

    self._file_object = file_object
    self._cpio_archive_file = cpio_archive_file
示例#2
0
文件: cpio.py 项目: tincho9/dfvfs
    def testReadFileEntryOnPortableASCII(self):
        """Tests the _ReadFileEntry function on portable ASCII format."""
        test_file = cpio.CPIOArchiveFile()
        test_file.file_format = 'odc'

        test_file_path = self._GetTestFilePath(['syslog.odc.cpio'])
        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            file_entry = test_file._ReadFileEntry(file_io_object, 0)
            self.assertEqual(file_entry.data_size, 1247)

            file_io_object.close()
示例#3
0
文件: cpio.py 项目: cugu-stars/dfvfs
    def testReadFileEntryOnPortableASCII(self):
        """Tests the _ReadFileEntry function on portable ASCII format."""
        test_file = cpio.CPIOArchiveFile()
        test_file.file_format = 'odc'

        test_path = self._GetTestFilePath(['syslog.odc.cpio'])
        self._SkipIfPathNotExists(test_path)

        test_os_path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_OS, location=test_path)
        file_object = resolver.Resolver.OpenFileObject(
            test_os_path_spec, resolver_context=self._resolver_context)

        file_entry = test_file._ReadFileEntry(file_object, 0)
        self.assertEqual(file_entry.data_size, 1247)
示例#4
0
文件: cpio.py 项目: tincho9/dfvfs
    def testReadFileEntryOnBinary(self):
        """Tests the _ReadFileEntry function on binary format."""
        test_file = cpio.CPIOArchiveFile()
        test_file.file_format = 'bin-little-endian'

        test_file_path = self._GetTestFilePath(['syslog.bin.cpio'])
        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            file_entry = test_file._ReadFileEntry(file_io_object, 0)
            self.assertEqual(file_entry.data_size, 1247)

            file_io_object.close()
示例#5
0
文件: cpio.py 项目: tincho9/dfvfs
    def testOpenAndCloseOnPortableASCII(self):
        """Tests the Open and Close functions on portable ASCII format."""
        test_file = cpio.CPIOArchiveFile()

        test_file_path = self._GetTestFilePath(['syslog.odc.cpio'])
        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            test_file.Open(file_io_object)

            self.assertEqual(test_file.file_format, 'odc')

            test_file.Close()
            file_io_object.close()
示例#6
0
文件: cpio.py 项目: tincho9/dfvfs
    def testOpenAndCloseOnBinary(self):
        """Tests the Open and Close functions on binary format."""
        test_file = cpio.CPIOArchiveFile()

        test_file_path = self._GetTestFilePath(['syslog.bin.cpio'])
        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            test_file.Open(file_io_object)

            self.assertEqual(test_file.file_format, 'bin-little-endian')

            test_file.Close()
            file_io_object.close()
示例#7
0
文件: cpio.py 项目: cugu-stars/dfvfs
    def testReadFileEntriesOnBinary(self):
        """Tests the _ReadFileEntries function on binary format."""
        test_file = cpio.CPIOArchiveFile()
        test_file.file_format = 'bin-little-endian'

        test_path = self._GetTestFilePath(['syslog.bin.cpio'])
        self._SkipIfPathNotExists(test_path)

        test_os_path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_OS, location=test_path)
        file_object = resolver.Resolver.OpenFileObject(
            test_os_path_spec, resolver_context=self._resolver_context)

        test_file._file_size = file_object.get_size()
        test_file._ReadFileEntries(file_object)
        self.assertEqual(len(test_file._file_entries), 1)
示例#8
0
文件: cpio.py 项目: cugu-stars/dfvfs
    def testOpenAndCloseOnPortableASCII(self):
        """Tests the Open and Close functions on portable ASCII format."""
        test_file = cpio.CPIOArchiveFile()

        test_path = self._GetTestFilePath(['syslog.odc.cpio'])
        self._SkipIfPathNotExists(test_path)

        test_os_path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_OS, location=test_path)
        file_object = resolver.Resolver.OpenFileObject(
            test_os_path_spec, resolver_context=self._resolver_context)

        test_file.Open(file_object)

        self.assertEqual(test_file.file_format, 'odc')

        test_file.Close()
示例#9
0
    def testReadFileEntryOnNewASCIIWithCRC(self):
        """Tests the _ReadFileEntry function on new ASCII with CRC format."""
        test_file = cpio.CPIOArchiveFile()
        test_file.file_format = 'crc'

        test_file_path = self._GetTestFilePath(['syslog.crc.cpio'])
        self._SkipIfPathNotExists(test_file_path)

        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            file_entry = test_file._ReadFileEntry(file_io_object, 0)
            self.assertEqual(file_entry.data_size, 1247)

            file_io_object.close()
示例#10
0
    def testReadFileEntriesOnBinary(self):
        """Tests the _ReadFileEntries function on binary format."""
        test_file = cpio.CPIOArchiveFile()
        test_file.file_format = 'bin-little-endian'

        test_file_path = self._GetTestFilePath(['syslog.bin.cpio'])
        self._SkipIfPathNotExists(test_file_path)

        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            test_file._file_size = file_io_object.get_size()
            test_file._ReadFileEntries(file_io_object)
            self.assertEqual(len(test_file._file_entries), 1)

            file_io_object.close()
示例#11
0
    def testOpenAndCloseOnNewASCIIWithCRC(self):
        """Tests the Open and Close functions on new ASCII with CRC format."""
        test_file = cpio.CPIOArchiveFile()

        test_file_path = self._GetTestFilePath(['syslog.crc.cpio'])
        self._SkipIfPathNotExists(test_file_path)

        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            test_file.Open(file_io_object)

            self.assertEqual(test_file.file_format, 'crc')

            test_file.Close()
            file_io_object.close()
示例#12
0
文件: cpio.py 项目: tincho9/dfvfs
    def testGetFileEntryByPathOnBinary(self):
        """Tests the GetFileEntryByPath function on binary format."""
        test_file = cpio.CPIOArchiveFile()

        test_file_path = self._GetTestFilePath(['syslog.bin.cpio'])
        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            test_file.Open(file_io_object)

            file_entry = test_file.GetFileEntryByPath('syslog')
            self.assertIsNotNone(file_entry)

            file_entry = test_file.GetFileEntryByPath('bogus')
            self.assertIsNone(file_entry)

            test_file.Close()
            file_io_object.close()
示例#13
0
文件: cpio.py 项目: tincho9/dfvfs
    def testFileEntryExistsByPathOnBinary(self):
        """Tests the FileEntryExistsByPath function on binary format."""
        test_file = cpio.CPIOArchiveFile()

        test_file_path = self._GetTestFilePath(['syslog.bin.cpio'])
        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            test_file.Open(file_io_object)

            result = test_file.FileEntryExistsByPath('syslog')
            self.assertTrue(result)

            result = test_file.FileEntryExistsByPath('bogus')
            self.assertFalse(result)

            test_file.Close()
            file_io_object.close()
示例#14
0
文件: cpio.py 项目: tincho9/dfvfs
    def testGetFileEntriesOnBinary(self):
        """Tests the GetFileEntries function on binary format."""
        test_file = cpio.CPIOArchiveFile()

        test_file_path = self._GetTestFilePath(['syslog.bin.cpio'])
        with open(test_file_path, 'rb') as file_object:
            file_io_object = file_object_io.FileObjectIO(
                None, file_object=file_object)
            file_io_object.open()

            test_file.Open(file_io_object)

            file_entries = list(test_file.GetFileEntries())
            self.assertEqual(len(file_entries), 1)

            test_file.Close()

            file_entries = list(test_file.GetFileEntries())
            self.assertEqual(len(file_entries), 0)

            file_io_object.close()
示例#15
0
文件: cpio.py 项目: cugu-stars/dfvfs
    def testGetFileEntryByPathOnBinary(self):
        """Tests the GetFileEntryByPath function on binary format."""
        test_file = cpio.CPIOArchiveFile()

        test_path = self._GetTestFilePath(['syslog.bin.cpio'])
        self._SkipIfPathNotExists(test_path)

        test_os_path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_OS, location=test_path)
        file_object = resolver.Resolver.OpenFileObject(
            test_os_path_spec, resolver_context=self._resolver_context)

        test_file.Open(file_object)

        file_entry = test_file.GetFileEntryByPath('syslog')
        self.assertIsNotNone(file_entry)

        file_entry = test_file.GetFileEntryByPath('bogus')
        self.assertIsNone(file_entry)

        test_file.Close()