diff --git a/CHANGELOG.md b/CHANGELOG.md index d02a446..6d2c361 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,11 @@ since 0.4.1, and this project adheres to [Semantic Versioning](https://semver.or - Platform support: Drop support for Ubuntu Focal, since it's nearing end-of-life ([#1018](https://github.com/freedomofpress/dangerzone/issues/1018)) - Platform support: Add support for Fedora 42 ([#1091](https://github.com/freedomofpress/dangerzone/issues/1091)) - Platform support: Add support for Ubuntu 25.04 (Plucky Puffin)([#1090](https://github.com/freedomofpress/dangerzone/issues/1090)) + +### Added + - Document Operating System support [#986](https://github.com/freedomofpress/dangerzone/issues/986) +- Tests: Look for regressions when converting PDFs [#321](https://github.com/freedomofpress/dangerzone/issues/321) ## [0.8.1](https://github.com/freedomofpress/dangerzone/compare/v0.8.1...0.8.0) diff --git a/tests/conftest.py b/tests/conftest.py index 3bef1af..2f9673c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -122,7 +122,7 @@ test_docs_compressed_dir = Path(__file__).parent.joinpath(SAMPLE_COMPRESSED_DIRE test_docs = [ p - for p in test_docs_dir.rglob("*") + for p in test_docs_dir.glob("*") if p.is_file() and not (p.name.endswith(SAFE_EXTENSION) or p.name.startswith("sample_bad")) ] diff --git a/tests/test_cli.py b/tests/test_cli.py index c7d9415..2ba2e87 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -11,6 +11,7 @@ import traceback from pathlib import Path from typing import Optional, Sequence +import fitz import pytest from click.testing import CliRunner, Result from pytest_mock import MockerFixture @@ -191,9 +192,26 @@ class TestCliConversion(TestCliBasic): result.assert_failure() @for_each_doc - def test_formats(self, doc: Path) -> None: - result = self.run_cli(str(doc)) + def test_formats(self, doc: Path, tmp_path_factory: pytest.TempPathFactory) -> None: + reference = (doc.parent / "reference" / doc.stem).with_suffix(".pdf") + destination = tmp_path_factory.mktemp(doc.stem).with_suffix(".pdf") + + result = self.run_cli([str(doc), "--output-filename", str(destination)]) result.assert_success() + # When needed, regenerate the reference PDFs by uncommenting the following line: + # reference.parent.mkdir(parents=True, exist_ok=True) + # shutil.copy(destination, reference) + + converted = fitz.open(destination) + ref = fitz.open(reference) + assert len(converted) == len(ref), "different number of pages" + + for page, ref_page in zip(converted, ref): + page.get_pixmap(dpi=150) + ref_page.get_pixmap(dpi=150) + assert page.get_pixmap().tobytes() == ref_page.get_pixmap().tobytes(), ( + f"different page content for page {page.number}" + ) def test_output_filename(self, sample_pdf: str) -> None: temp_dir = tempfile.mkdtemp(prefix="dangerzone-") diff --git a/tests/test_docs/reference/sample-bmp.pdf b/tests/test_docs/reference/sample-bmp.pdf new file mode 100644 index 0000000..7cf54cd Binary files /dev/null and b/tests/test_docs/reference/sample-bmp.pdf differ diff --git a/tests/test_docs/reference/sample-doc.pdf b/tests/test_docs/reference/sample-doc.pdf new file mode 100644 index 0000000..4252ab8 Binary files /dev/null and b/tests/test_docs/reference/sample-doc.pdf differ diff --git a/tests/test_docs/reference/sample-docm.pdf b/tests/test_docs/reference/sample-docm.pdf new file mode 100644 index 0000000..2cd5808 Binary files /dev/null and b/tests/test_docs/reference/sample-docm.pdf differ diff --git a/tests/test_docs/reference/sample-docx.pdf b/tests/test_docs/reference/sample-docx.pdf new file mode 100644 index 0000000..a0dc94e Binary files /dev/null and b/tests/test_docs/reference/sample-docx.pdf differ diff --git a/tests/test_docs/reference/sample-epub.pdf b/tests/test_docs/reference/sample-epub.pdf new file mode 100644 index 0000000..b4ee283 Binary files /dev/null and b/tests/test_docs/reference/sample-epub.pdf differ diff --git a/tests/test_docs/reference/sample-gif.pdf b/tests/test_docs/reference/sample-gif.pdf new file mode 100644 index 0000000..305ea47 Binary files /dev/null and b/tests/test_docs/reference/sample-gif.pdf differ diff --git a/tests/test_docs/reference/sample-jpg.pdf b/tests/test_docs/reference/sample-jpg.pdf new file mode 100644 index 0000000..56c7aa8 Binary files /dev/null and b/tests/test_docs/reference/sample-jpg.pdf differ diff --git a/tests/test_docs/reference/sample-mime-application-zip.pdf b/tests/test_docs/reference/sample-mime-application-zip.pdf new file mode 100644 index 0000000..a3e4f8e Binary files /dev/null and b/tests/test_docs/reference/sample-mime-application-zip.pdf differ diff --git a/tests/test_docs/reference/sample-mime-octet-stream.pdf b/tests/test_docs/reference/sample-mime-octet-stream.pdf new file mode 100644 index 0000000..d9fcd93 Binary files /dev/null and b/tests/test_docs/reference/sample-mime-octet-stream.pdf differ diff --git a/tests/test_docs/reference/sample-mime-spreadsheet-template.pdf b/tests/test_docs/reference/sample-mime-spreadsheet-template.pdf new file mode 100644 index 0000000..ba1f9b8 Binary files /dev/null and b/tests/test_docs/reference/sample-mime-spreadsheet-template.pdf differ diff --git a/tests/test_docs/reference/sample-mime-text-template.pdf b/tests/test_docs/reference/sample-mime-text-template.pdf new file mode 100644 index 0000000..afb85e3 Binary files /dev/null and b/tests/test_docs/reference/sample-mime-text-template.pdf differ diff --git a/tests/test_docs/reference/sample-mime-x-ole-storage.pdf b/tests/test_docs/reference/sample-mime-x-ole-storage.pdf new file mode 100644 index 0000000..05f442c Binary files /dev/null and b/tests/test_docs/reference/sample-mime-x-ole-storage.pdf differ diff --git a/tests/test_docs/reference/sample-odg.pdf b/tests/test_docs/reference/sample-odg.pdf new file mode 100644 index 0000000..c725533 Binary files /dev/null and b/tests/test_docs/reference/sample-odg.pdf differ diff --git a/tests/test_docs/reference/sample-odp.pdf b/tests/test_docs/reference/sample-odp.pdf new file mode 100644 index 0000000..00ebfb5 Binary files /dev/null and b/tests/test_docs/reference/sample-odp.pdf differ diff --git a/tests/test_docs/reference/sample-ods.pdf b/tests/test_docs/reference/sample-ods.pdf new file mode 100644 index 0000000..43b44e0 Binary files /dev/null and b/tests/test_docs/reference/sample-ods.pdf differ diff --git a/tests/test_docs/reference/sample-odt-mp4.pdf b/tests/test_docs/reference/sample-odt-mp4.pdf new file mode 100644 index 0000000..9fd9bbd Binary files /dev/null and b/tests/test_docs/reference/sample-odt-mp4.pdf differ diff --git a/tests/test_docs/reference/sample-odt.pdf b/tests/test_docs/reference/sample-odt.pdf new file mode 100644 index 0000000..a4cffa7 Binary files /dev/null and b/tests/test_docs/reference/sample-odt.pdf differ diff --git a/tests/test_docs/reference/sample-pbm.pdf b/tests/test_docs/reference/sample-pbm.pdf new file mode 100644 index 0000000..d279a8c Binary files /dev/null and b/tests/test_docs/reference/sample-pbm.pdf differ diff --git a/tests/test_docs/reference/sample-pdf.pdf b/tests/test_docs/reference/sample-pdf.pdf new file mode 100644 index 0000000..36af3ef Binary files /dev/null and b/tests/test_docs/reference/sample-pdf.pdf differ diff --git a/tests/test_docs/reference/sample-png.pdf b/tests/test_docs/reference/sample-png.pdf new file mode 100644 index 0000000..9682b81 Binary files /dev/null and b/tests/test_docs/reference/sample-png.pdf differ diff --git a/tests/test_docs/reference/sample-pnm.pdf b/tests/test_docs/reference/sample-pnm.pdf new file mode 100644 index 0000000..475082c Binary files /dev/null and b/tests/test_docs/reference/sample-pnm.pdf differ diff --git a/tests/test_docs/reference/sample-ppm.pdf b/tests/test_docs/reference/sample-ppm.pdf new file mode 100644 index 0000000..4cc1694 Binary files /dev/null and b/tests/test_docs/reference/sample-ppm.pdf differ diff --git a/tests/test_docs/reference/sample-ppt.pdf b/tests/test_docs/reference/sample-ppt.pdf new file mode 100644 index 0000000..ffdf64a Binary files /dev/null and b/tests/test_docs/reference/sample-ppt.pdf differ diff --git a/tests/test_docs/reference/sample-pptx.pdf b/tests/test_docs/reference/sample-pptx.pdf new file mode 100644 index 0000000..38e6a7d Binary files /dev/null and b/tests/test_docs/reference/sample-pptx.pdf differ diff --git a/tests/test_docs/reference/sample-svg.pdf b/tests/test_docs/reference/sample-svg.pdf new file mode 100644 index 0000000..0a86b4f Binary files /dev/null and b/tests/test_docs/reference/sample-svg.pdf differ diff --git a/tests/test_docs/reference/sample-xls.pdf b/tests/test_docs/reference/sample-xls.pdf new file mode 100644 index 0000000..c5902f7 Binary files /dev/null and b/tests/test_docs/reference/sample-xls.pdf differ diff --git a/tests/test_docs/reference/sample-xlsx.pdf b/tests/test_docs/reference/sample-xlsx.pdf new file mode 100644 index 0000000..1bada04 Binary files /dev/null and b/tests/test_docs/reference/sample-xlsx.pdf differ