def test_run_nonexistent(self, shutil_mock): """Run the CleanUpDownloadLocationTask class for nonexistent location.""" dnf_manager = DNFManager() dnf_manager.set_download_location("/my/nonexistent/path") task = CleanUpDownloadLocationTask(dnf_manager) task.run() shutil_mock.rmtree.assert_not_called()
def test_run(self): """Run the CleanUpDownloadLocationTask class.""" dnf_manager = DNFManager() with tempfile.TemporaryDirectory() as path: # Mock the download location. dnf_manager.set_download_location(path) # Create files in the download location. os.mknod(os.path.join(path, "f1")) os.mknod(os.path.join(path, "f2")) os.mknod(os.path.join(path, "f3")) task = CleanUpDownloadLocationTask(dnf_manager) task.run() # The files should be deleted. assert not os.path.exists(os.path.join(path, "f1")) assert not os.path.exists(os.path.join(path, "f2")) assert not os.path.exists(os.path.join(path, "f3"))
def install(self): progress_message(N_('Starting package installation process')) # Get the packages configuration and selection data. configuration = self.get_packages_configuration() selection = self.get_packages_selection() # Add the rpm macros to the global transaction environment task = SetRPMMacrosTask(configuration) task.run() try: # Resolve packages. task = ResolvePackagesTask(self._dnf_manager, selection) task.run() except NonCriticalInstallationError as e: # FIXME: This is a temporary workaround. # Allow users to handle the error. If they don't want # to continue with the installation, raise a different # exception to make sure that we will not run the error # handler again. if error_handler.cb(e) == ERROR_RAISE: raise InstallationError(str(e)) from e # Set up the download location. task = PrepareDownloadLocationTask(self._dnf_manager) task.run() # Download the packages. task = DownloadPackagesTask(self._dnf_manager) task.progress_changed_signal.connect(self._progress_cb) task.run() # Install the packages. task = InstallPackagesTask(self._dnf_manager) task.progress_changed_signal.connect(self._progress_cb) task.run() # Clean up the download location. task = CleanUpDownloadLocationTask(self._dnf_manager) task.run()