Added try excepts for unhandled exceptions

Fixes #776
This commit is contained in:
amnak613 2024-09-10 15:42:03 -07:00 committed by Alex Pyrgiotis
parent d7f80965b1
commit 9b9e265b11
No known key found for this signature in database
GPG key ID: B6C15EBA0357C9AA
2 changed files with 26 additions and 5 deletions

View file

@ -65,11 +65,17 @@ class DangerzoneCore(object):
self, ocr_lang: Optional[str], stdout_callback: Optional[Callable] = None self, ocr_lang: Optional[str], stdout_callback: Optional[Callable] = None
) -> None: ) -> None:
def convert_doc(document: Document) -> None: def convert_doc(document: Document) -> None:
try:
self.isolation_provider.convert( self.isolation_provider.convert(
document, document,
ocr_lang, ocr_lang,
stdout_callback, stdout_callback,
) )
except Exception as e:
log.exception(
f"Unexpected error occurred while converting '{document}'"
)
document.mark_as_failed()
max_jobs = self.isolation_provider.get_max_parallel_conversions() max_jobs = self.isolation_provider.get_max_parallel_conversions()
with concurrent.futures.ThreadPoolExecutor(max_workers=max_jobs) as executor: with concurrent.futures.ThreadPoolExecutor(max_workers=max_jobs) as executor:

View file

@ -19,6 +19,7 @@ from strip_ansi import strip_ansi
from dangerzone.cli import cli_main, display_banner from dangerzone.cli import cli_main, display_banner
from dangerzone.document import ARCHIVE_SUBDIR, SAFE_EXTENSION from dangerzone.document import ARCHIVE_SUBDIR, SAFE_EXTENSION
from dangerzone.isolation_provider.qubes import is_qubes_native_conversion from dangerzone.isolation_provider.qubes import is_qubes_native_conversion
from dangerzone.util import get_resource_path
from .conftest import for_each_doc, for_each_external_doc from .conftest import for_each_doc, for_each_external_doc
@ -219,6 +220,20 @@ class TestCliConversion(TestCliBasic):
result = self.run_cli([sample_pdf, "--output-filename", output_filename]) result = self.run_cli([sample_pdf, "--output-filename", output_filename])
result.assert_success() result.assert_success()
### Test method for swallowed exception
def test_output_filename_same_file_dummy_fails(self) -> None:
resource_path = get_resource_path("dummy_document.pdf")
# Using the same filename for both input and output should fail.
result = self.run_cli(
[
resource_path,
"--output-filename",
resource_path,
"--unsafe-dummy-conversion",
]
)
result.assert_failure()
def test_output_filename_new_dir(self, sample_pdf: str) -> None: def test_output_filename_new_dir(self, sample_pdf: str) -> None:
output_filename = str(Path("fake-directory") / "my-output.pdf") output_filename = str(Path("fake-directory") / "my-output.pdf")
result = self.run_cli([sample_pdf, "--output-filename", output_filename]) result = self.run_cli([sample_pdf, "--output-filename", output_filename])