diff --git a/src/documents/tests/conftest.py b/src/documents/tests/conftest.py index 20ffdc890..860ac12ca 100644 --- a/src/documents/tests/conftest.py +++ b/src/documents/tests/conftest.py @@ -15,7 +15,7 @@ if TYPE_CHECKING: @pytest.fixture(scope="session") -def samples_dir() -> Path: +def document_samples_dir() -> Path: """Path to the shared test sample documents.""" return Path(__file__).parent / "samples" / "documents" @@ -23,20 +23,20 @@ def samples_dir() -> Path: @pytest.fixture() def sample_doc( paperless_dirs: "PaperlessDirs", - samples_dir: Path, + document_samples_dir: Path, ) -> "Document": """Create a document with valid files and matching checksums.""" with filelock.FileLock(paperless_dirs.media_lock): shutil.copy( - samples_dir / "originals" / "0000001.pdf", + document_samples_dir / "originals" / "0000001.pdf", paperless_dirs.originals_dir / "0000001.pdf", ) shutil.copy( - samples_dir / "archive" / "0000001.pdf", + document_samples_dir / "archive" / "0000001.pdf", paperless_dirs.archive_dir / "0000001.pdf", ) shutil.copy( - samples_dir / "thumbnails" / "0000001.webp", + document_samples_dir / "thumbnails" / "0000001.webp", paperless_dirs.thumbnail_dir / "0000001.webp", ) diff --git a/src/documents/tests/test_double_sided.py b/src/documents/tests/test_double_sided.py index 3f6ecb2f1..1e9b046c4 100644 --- a/src/documents/tests/test_double_sided.py +++ b/src/documents/tests/test_double_sided.py @@ -17,6 +17,7 @@ from documents.double_sided import STAGING_FILE_NAME from documents.double_sided import TIMEOUT_MINUTES from documents.tests.utils import DummyProgressManager from documents.tests.utils import FileSystemAssertsMixin +from documents.tests.utils import SampleDirMixin from paperless_testing.dirs import DirectoriesMixin @@ -24,9 +25,12 @@ from paperless_testing.dirs import DirectoriesMixin CONSUMER_RECURSIVE=True, CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED=True, ) -class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): - SAMPLE_DIR = Path(__file__).parent / "samples" - +class TestDoubleSided( + DirectoriesMixin, + FileSystemAssertsMixin, + SampleDirMixin, + TestCase, +): def setUp(self) -> None: super().setUp() self.double_sided_dir = self.dirs.consumption_dir / "double-sided" diff --git a/src/paperless/tests/conftest.py b/src/paperless/tests/conftest.py index c43659506..27ed600c2 100644 --- a/src/paperless/tests/conftest.py +++ b/src/paperless/tests/conftest.py @@ -22,11 +22,11 @@ if TYPE_CHECKING: @pytest.fixture(scope="session") -def samples_dir() -> Path: +def parser_samples_dir() -> Path: """Absolute path to the shared parser sample files directory. Sub-package conftest files derive format-specific paths from this root, - e.g. ``samples_dir / "text" / "test.txt"``. + e.g. ``parser_samples_dir / "text" / "test.txt"``. Returns ------- @@ -37,7 +37,7 @@ def samples_dir() -> Path: @pytest.fixture(scope="session") -def tagged_no_text_pdf_file(samples_dir: Path) -> Path: +def tagged_no_text_pdf_file(parser_samples_dir: Path) -> Path: """Path to a tagged PDF whose only "text" is pdftotext layout padding. Reproduces GH #13387: ``/MarkInfo /Marked true`` is set, but the only @@ -50,7 +50,7 @@ def tagged_no_text_pdf_file(samples_dir: Path) -> Path: Path Absolute path to ``tesseract/tagged-but-no-text.pdf``. """ - return samples_dir / "tesseract" / "tagged-but-no-text.pdf" + return parser_samples_dir / "tesseract" / "tagged-but-no-text.pdf" @pytest.fixture(autouse=True) diff --git a/src/paperless/tests/parsers/conftest.py b/src/paperless/tests/parsers/conftest.py index 687944f71..343e9ea8a 100644 --- a/src/paperless/tests/parsers/conftest.py +++ b/src/paperless/tests/parsers/conftest.py @@ -37,15 +37,15 @@ if TYPE_CHECKING: @pytest.fixture(scope="session") -def text_samples_dir(samples_dir: Path) -> Path: +def text_samples_dir(parser_samples_dir: Path) -> Path: """Absolute path to the text parser sample files directory. Returns ------- Path - ``/text/`` + ``/text/`` """ - return samples_dir / "text" + return parser_samples_dir / "text" @pytest.fixture(scope="session") @@ -175,15 +175,15 @@ def no_engine_settings( @pytest.fixture(scope="session") -def tika_samples_dir(samples_dir: Path) -> Path: +def tika_samples_dir(parser_samples_dir: Path) -> Path: """Absolute path to the Tika parser sample files directory. Returns ------- Path - ``/tika/`` + ``/tika/`` """ - return samples_dir / "tika" + return parser_samples_dir / "tika" @pytest.fixture(scope="session") @@ -258,15 +258,15 @@ def tika_parser() -> Generator[TikaDocumentParser, None, None]: @pytest.fixture(scope="session") -def mail_samples_dir(samples_dir: Path) -> Path: +def mail_samples_dir(parser_samples_dir: Path) -> Path: """Absolute path to the mail parser sample files directory. Returns ------- Path - ``/mail/`` + ``/mail/`` """ - return samples_dir / "mail" + return parser_samples_dir / "mail" @pytest.fixture(scope="session") @@ -421,75 +421,15 @@ def nginx_base_url() -> Generator[str, None, None]: @pytest.fixture(scope="session") -def tesseract_samples_dir(samples_dir: Path) -> Path: +def tesseract_samples_dir(parser_samples_dir: Path) -> Path: """Absolute path to the tesseract parser sample files directory. Returns ------- Path - ``/tesseract/`` + ``/tesseract/`` """ - return samples_dir / "tesseract" - - -@pytest.fixture(scope="session") -def document_webp_file(tesseract_samples_dir: Path) -> Path: - """Path to a WebP document sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/document.webp``. - """ - return tesseract_samples_dir / "document.webp" - - -@pytest.fixture(scope="session") -def encrypted_pdf_file(tesseract_samples_dir: Path) -> Path: - """Path to an encrypted PDF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/encrypted.pdf``. - """ - return tesseract_samples_dir / "encrypted.pdf" - - -@pytest.fixture(scope="session") -def multi_page_digital_pdf_file(tesseract_samples_dir: Path) -> Path: - """Path to a multi-page digital PDF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/multi-page-digital.pdf``. - """ - return tesseract_samples_dir / "multi-page-digital.pdf" - - -@pytest.fixture(scope="session") -def multi_page_images_alpha_rgb_tiff_file(tesseract_samples_dir: Path) -> Path: - """Path to a multi-page TIFF with alpha channel in RGB. - - Returns - ------- - Path - Absolute path to ``tesseract/multi-page-images-alpha-rgb.tiff``. - """ - return tesseract_samples_dir / "multi-page-images-alpha-rgb.tiff" - - -@pytest.fixture(scope="session") -def multi_page_images_alpha_tiff_file(tesseract_samples_dir: Path) -> Path: - """Path to a multi-page TIFF with alpha channel. - - Returns - ------- - Path - Absolute path to ``tesseract/multi-page-images-alpha.tiff``. - """ - return tesseract_samples_dir / "multi-page-images-alpha.tiff" + return parser_samples_dir / "tesseract" @pytest.fixture(scope="session") @@ -504,90 +444,6 @@ def multi_page_images_pdf_file(tesseract_samples_dir: Path) -> Path: return tesseract_samples_dir / "multi-page-images.pdf" -@pytest.fixture(scope="session") -def multi_page_images_tiff_file(tesseract_samples_dir: Path) -> Path: - """Path to a multi-page TIFF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/multi-page-images.tiff``. - """ - return tesseract_samples_dir / "multi-page-images.tiff" - - -@pytest.fixture(scope="session") -def multi_page_mixed_pdf_file(tesseract_samples_dir: Path) -> Path: - """Path to a multi-page mixed PDF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/multi-page-mixed.pdf``. - """ - return tesseract_samples_dir / "multi-page-mixed.pdf" - - -@pytest.fixture(scope="session") -def no_text_alpha_png_file(tesseract_samples_dir: Path) -> Path: - """Path to a PNG with alpha channel and no text. - - Returns - ------- - Path - Absolute path to ``tesseract/no-text-alpha.png``. - """ - return tesseract_samples_dir / "no-text-alpha.png" - - -@pytest.fixture(scope="session") -def rotated_pdf_file(tesseract_samples_dir: Path) -> Path: - """Path to a rotated PDF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/rotated.pdf``. - """ - return tesseract_samples_dir / "rotated.pdf" - - -@pytest.fixture(scope="session") -def rtl_test_pdf_file(tesseract_samples_dir: Path) -> Path: - """Path to an RTL test PDF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/rtl-test.pdf``. - """ - return tesseract_samples_dir / "rtl-test.pdf" - - -@pytest.fixture(scope="session") -def signed_pdf_file(tesseract_samples_dir: Path) -> Path: - """Path to a signed PDF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/signed.pdf``. - """ - return tesseract_samples_dir / "signed.pdf" - - -@pytest.fixture(scope="session") -def simple_alpha_png_file(tesseract_samples_dir: Path) -> Path: - """Path to a simple PNG with alpha channel. - - Returns - ------- - Path - Absolute path to ``tesseract/simple-alpha.png``. - """ - return tesseract_samples_dir / "simple-alpha.png" - - @pytest.fixture(scope="session") def simple_digital_pdf_file(tesseract_samples_dir: Path) -> Path: """Path to a simple digital PDF sample file. @@ -612,54 +468,6 @@ def simple_no_dpi_png_file(tesseract_samples_dir: Path) -> Path: return tesseract_samples_dir / "simple-no-dpi.png" -@pytest.fixture(scope="session") -def simple_bmp_file(tesseract_samples_dir: Path) -> Path: - """Path to a simple BMP sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/simple.bmp``. - """ - return tesseract_samples_dir / "simple.bmp" - - -@pytest.fixture(scope="session") -def simple_gif_file(tesseract_samples_dir: Path) -> Path: - """Path to a simple GIF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/simple.gif``. - """ - return tesseract_samples_dir / "simple.gif" - - -@pytest.fixture(scope="session") -def simple_heic_file(tesseract_samples_dir: Path) -> Path: - """Path to a simple HEIC sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/simple.heic``. - """ - return tesseract_samples_dir / "simple.heic" - - -@pytest.fixture(scope="session") -def simple_jpg_file(tesseract_samples_dir: Path) -> Path: - """Path to a simple JPG sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/simple.jpg``. - """ - return tesseract_samples_dir / "simple.jpg" - - @pytest.fixture(scope="session") def simple_png_file(tesseract_samples_dir: Path) -> Path: """Path to a simple PNG sample file. @@ -672,42 +480,6 @@ def simple_png_file(tesseract_samples_dir: Path) -> Path: return tesseract_samples_dir / "simple.png" -@pytest.fixture(scope="session") -def simple_tif_file(tesseract_samples_dir: Path) -> Path: - """Path to a simple TIF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/simple.tif``. - """ - return tesseract_samples_dir / "simple.tif" - - -@pytest.fixture(scope="session") -def single_page_mixed_pdf_file(tesseract_samples_dir: Path) -> Path: - """Path to a single-page mixed PDF sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/single-page-mixed.pdf``. - """ - return tesseract_samples_dir / "single-page-mixed.pdf" - - -@pytest.fixture(scope="session") -def with_form_pdf_file(tesseract_samples_dir: Path) -> Path: - """Path to a PDF with form sample file. - - Returns - ------- - Path - Absolute path to ``tesseract/with-form.pdf``. - """ - return tesseract_samples_dir / "with-form.pdf" - - # ------------------------------------------------------------------ # Tesseract parser instance and settings helpers # ------------------------------------------------------------------