Python shutil.ReadError() Examples

The following are 6 code examples of shutil.ReadError(). You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may also want to check out all available functions/classes of the module shutil , or try the search function .
Example #1
Source File: test_verify_android_sdk.py    From briefcase with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
def test_detects_bad_zipfile(mock_command, tmp_path):
    "If the ZIP file is corrupted, an error is raised."
    android_sdk_root_path = tmp_path / ".briefcase" / "tools" / "android_sdk"

    # The download will produce a cached file
    cache_file = MagicMock()
    cache_file.__str__.return_value = "/path/to/download.zip"
    mock_command.download_url.return_value = cache_file

    # But the unpack will fail.
    mock_command.shutil.unpack_archive.side_effect = shutil.ReadError

    with pytest.raises(BriefcaseCommandError):
        verify_android_sdk(mock_command)

    # The download attempt was made.
    mock_command.download_url.assert_called_once_with(
        url="https://dl.google.com/android/repository/sdk-tools-unknown-4333796.zip",
        download_path=mock_command.dot_briefcase_path / "tools",
    )
    mock_command.shutil.unpack_archive.assert_called_once_with(
        "/path/to/download.zip",
        extract_dir=str(android_sdk_root_path)
    ) 
Example #2
Source File: lib.py    From mathlib-tools with Apache License 2.0 6 votes vote down vote up
def get_mathlib_olean(self) -> None:
        """Get precompiled mathlib oleans for this project."""
        # Just in case the user broke the workflow (for instance git clone
        # mathlib by hand and then run `leanproject get-cache`)
        if not (self.directory/'leanpkg.path').exists():
            self.run(['leanpkg', 'configure'])
        try:
            archive = get_mathlib_archive(self.mathlib_rev, self.cache_url,
                                           self.force_download, self.repo)
        except (EOFError, shutil.ReadError):
            log.info('Something wrong happened with the olean archive. '
                     'I will now retry downloading.')
            archive = get_mathlib_archive(self.mathlib_rev, self.cache_url,
                                          True, self.repo)
        self.clean_mathlib()
        self.mathlib_folder.mkdir(parents=True, exist_ok=True)
        unpack_archive(archive, self.mathlib_folder)
        # Let's now touch oleans, just in case
        touch_oleans(self.mathlib_folder) 
Example #3
Source File: test_shutil.py    From Fluid-Designer with GNU General Public License v3.0 6 votes vote down vote up
def test_unpack_archive(self):
        formats = ['tar', 'gztar', 'zip']
        if BZ2_SUPPORTED:
            formats.append('bztar')
        if LZMA_SUPPORTED:
            formats.append('xztar')

        root_dir, base_dir = self._create_files()
        expected = rlistdir(root_dir)
        expected.remove('outer')
        for format in formats:
            base_name = os.path.join(self.mkdtemp(), 'archive')
            filename = make_archive(base_name, format, root_dir, base_dir)

            # let's try to unpack it now
            tmpdir2 = self.mkdtemp()
            unpack_archive(filename, tmpdir2)
            self.assertEqual(rlistdir(tmpdir2), expected)

            # and again, this time with the format specified
            tmpdir3 = self.mkdtemp()
            unpack_archive(filename, tmpdir3, format=format)
            self.assertEqual(rlistdir(tmpdir3), expected)
        self.assertRaises(shutil.ReadError, unpack_archive, TESTFN)
        self.assertRaises(ValueError, unpack_archive, TESTFN, format='xxx') 
Example #4
Source File: test_shutil.py    From ironpython3 with Apache License 2.0 6 votes vote down vote up
def test_unpack_archive(self):
        formats = ['tar', 'gztar', 'zip']
        if BZ2_SUPPORTED:
            formats.append('bztar')

        root_dir, base_dir = self._create_files()
        expected = rlistdir(root_dir)
        expected.remove('outer')
        for format in formats:
            base_name = os.path.join(self.mkdtemp(), 'archive')
            filename = make_archive(base_name, format, root_dir, base_dir)

            # let's try to unpack it now
            tmpdir2 = self.mkdtemp()
            unpack_archive(filename, tmpdir2)
            self.assertEqual(rlistdir(tmpdir2), expected)

            # and again, this time with the format specified
            tmpdir3 = self.mkdtemp()
            unpack_archive(filename, tmpdir3, format=format)
            self.assertEqual(rlistdir(tmpdir3), expected)
        self.assertRaises(shutil.ReadError, unpack_archive, TESTFN)
        self.assertRaises(ValueError, unpack_archive, TESTFN, format='xxx') 
Example #5
Source File: test_shutil.py    From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 6 votes vote down vote up
def check_unpack_archive(self, format):
        root_dir, base_dir = self._create_files()
        expected = rlistdir(root_dir)
        expected.remove('outer')

        base_name = os.path.join(self.mkdtemp(), 'archive')
        filename = make_archive(base_name, format, root_dir, base_dir)

        # let's try to unpack it now
        tmpdir2 = self.mkdtemp()
        unpack_archive(filename, tmpdir2)
        self.assertEqual(rlistdir(tmpdir2), expected)

        # and again, this time with the format specified
        tmpdir3 = self.mkdtemp()
        unpack_archive(filename, tmpdir3, format=format)
        self.assertEqual(rlistdir(tmpdir3), expected)

        self.assertRaises(shutil.ReadError, unpack_archive, TESTFN)
        self.assertRaises(ValueError, unpack_archive, TESTFN, format='xxx') 
Example #6
Source File: test_verify_jdk.py    From briefcase with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
def test_invalid_jdk_archive(test_command, tmp_path):
    "If the JDK download isn't a valid archive, raise an error"
    # Mock Linux as the host
    test_command.host_os = 'Linux'

    # Mock the cached download path
    archive = mock.MagicMock()
    archive.__str__.return_value = '/path/to/download.zip'
    test_command.download_url.return_value = archive

    # Mock an unpack failure due to an invalid archive
    test_command.shutil.unpack_archive.side_effect = shutil.ReadError

    with pytest.raises(BriefcaseCommandError):
        verify_jdk(command=test_command)

    # The download occurred
    test_command.download_url.assert_called_with(
        url="https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/"
            "jdk8u242-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u242b08.tar.gz",
        download_path=tmp_path / "tools",
    )
    # An attempt was made to unpack the archive
    test_command.shutil.unpack_archive.assert_called_with(
        '/path/to/download.zip',
        extract_dir=str(tmp_path / "tools")
    )
    # The original archive was not deleted
    assert archive.unlink.call_count == 0