示例#1
0
    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
示例#2
0
    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")
示例#3
0
    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()
示例#4
0
    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()
示例#5
0
    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()
示例#6
0
    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()
示例#7
0
    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")
示例#8
0
    def test_signal_abort(self):
        """Tests the signal_abort function."""
        vsgpt_volume = pyvsgpt.volume()

        vsgpt_volume.signal_abort()