def _Open(self, mode='rb'): """Opens the file system object defined by path specification. Args: 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 object could not be opened. PathSpecError: if the path specification is incorrect. ValueError: if the path specification is invalid. """ if not self._path_spec.HasParent(): raise errors.PathSpecError( 'Unsupported path specification without parent.') file_object = resolver.Resolver.OpenFileObject( self._path_spec.parent, resolver_context=self._resolver_context) vsgpt_volume = pyvsgpt.volume() vsgpt_volume.open_file_object(file_object) self._file_object = file_object self._vsgpt_volume = vsgpt_volume
def test_open_file_object(self): """Tests the open_file_object function.""" test_source = unittest.source if not test_source: raise unittest.SkipTest("missing source") if not os.path.isfile(test_source): raise unittest.SkipTest("source not a regular file") vsgpt_volume = pyvsgpt.volume() with open(test_source, "rb") as file_object: vsgpt_volume.open_file_object(file_object) with self.assertRaises(IOError): vsgpt_volume.open_file_object(file_object) vsgpt_volume.close() with self.assertRaises(TypeError): vsgpt_volume.open_file_object(None) with self.assertRaises(ValueError): vsgpt_volume.open_file_object(file_object, mode="w")
def test_open_close(self): """Tests the open and close functions.""" test_source = unittest.source if not test_source: return vsgpt_volume = pyvsgpt.volume() # Test open and close. vsgpt_volume.open(test_source) vsgpt_volume.close() # Test open and close a second time to validate clean up on close. vsgpt_volume.open(test_source) vsgpt_volume.close() if os.path.isfile(test_source): with open(test_source, "rb") as file_object: # Test open_file_object and close. vsgpt_volume.open_file_object(file_object) vsgpt_volume.close() # Test open_file_object and close a second time to validate clean up on close. vsgpt_volume.open_file_object(file_object) vsgpt_volume.close() # Test open_file_object and close and dereferencing file_object. vsgpt_volume.open_file_object(file_object) del file_object vsgpt_volume.close()
def test_close(self): """Tests the close function.""" test_source = unittest.source if not test_source: raise unittest.SkipTest("missing source") vsgpt_volume = pyvsgpt.volume() with self.assertRaises(IOError): vsgpt_volume.close()
def test_get_number_of_partitions(self): """Tests the get_number_of_partitions function and number_of_partitions property.""" test_source = unittest.source if not test_source: raise unittest.SkipTest("missing source") vsgpt_volume = pyvsgpt.volume() vsgpt_volume.open(test_source) number_of_partitions = vsgpt_volume.get_number_of_partitions() self.assertIsNotNone(number_of_partitions) self.assertIsNotNone(vsgpt_volume.number_of_partitions) vsgpt_volume.close()
def test_get_bytes_per_sector(self): """Tests the get_bytes_per_sector function and bytes_per_sector property.""" test_source = unittest.source if not test_source: raise unittest.SkipTest("missing source") vsgpt_volume = pyvsgpt.volume() vsgpt_volume.open(test_source) bytes_per_sector = vsgpt_volume.get_bytes_per_sector() self.assertIsNotNone(bytes_per_sector) self.assertIsNotNone(vsgpt_volume.bytes_per_sector) vsgpt_volume.close()
def test_open(self): """Tests the open function.""" test_source = unittest.source if not test_source: raise unittest.SkipTest("missing source") vsgpt_volume = pyvsgpt.volume() vsgpt_volume.open(test_source) with self.assertRaises(IOError): vsgpt_volume.open(test_source) vsgpt_volume.close() with self.assertRaises(TypeError): vsgpt_volume.open(None) with self.assertRaises(ValueError): vsgpt_volume.open(test_source, mode="w")
def test_signal_abort(self): """Tests the signal_abort function.""" vsgpt_volume = pyvsgpt.volume() vsgpt_volume.signal_abort()