pdf2md/tests/test_defaults.py

51 lines
1.6 KiB
Python
Raw Normal View History

"""Standardwerte: EPUB-Sprache, Prozesszahl, Titel/Autor aus dem Dateinamen."""
import zipfile
import pymupdf
import pytest
import pdf2md as p
from conftest import needs_pandoc
from test_e2e import run
@pytest.mark.parametrize(
"ocr_language, expected",
[("deu", "de"), ("eng", "en"), ("eng+deu", "en"), ("fra", "fr"), ("xyz", "de")],
)
def test_epub_language_follows_ocr_language(ocr_language, expected):
assert p.epub_language(ocr_language) == expected
@pytest.mark.parametrize("cores, expected", [(None, 1), (1, 1), (4, 2), (24, 8)])
def test_default_jobs(monkeypatch, cores, expected):
monkeypatch.setattr(p.os, "cpu_count", lambda: cores)
assert p.default_jobs() == expected
@pytest.mark.parametrize(
"stem, expected",
[
("Katja_Adler_-_Rolle_rückwärts_DDR", ("Rolle rückwärts DDR", "Katja Adler")),
("Zensur_Netzwerk_Deutschland_de-report-de", ("Zensur Netzwerk Deutschland de-report-de", "")),
("A_-_B_-_C", ("B - C", "A")),
],
)
def test_title_author_from_filename(stem, expected):
assert p.title_author_from_filename(stem) == expected
@needs_pandoc
def test_epub_without_metadata_uses_filename_and_ocr_language(pdfs, tmp_path):
doc = pymupdf.open(pdfs["digital"])
doc.set_metadata({})
source = tmp_path / "Max_Muster_-_Ein_Buch.pdf"
doc.save(source)
run(source, tmp_path / "buch.md", "--epub", "--ocr-language", "eng")
with zipfile.ZipFile(tmp_path / "buch.epub") as z:
opf = z.read("EPUB/content.opf").decode()
assert ">Ein Buch<" in opf
assert ">Max Muster<" in opf
assert "<dc:language>en</dc:language>" in opf