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
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()
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)
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()
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()
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()
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)
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()
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()
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()
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()
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()
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()
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()
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()