Convert many run_ocrmypdf -> run_ocrmypdf_api

This commit is contained in:
James R. Barlow
2023-10-24 00:54:31 -07:00
parent 82bef40aa6
commit 8916955f45
+33 -31
View File
@@ -16,7 +16,7 @@ from PIL import Image
import ocrmypdf
from ocrmypdf._exec import tesseract
from ocrmypdf.exceptions import ExitCode, MissingDependencyError
from ocrmypdf.exceptions import ExitCode, MissingDependencyError, OutputFileAccessError
from ocrmypdf.pdfa import file_claims_pdfa
from ocrmypdf.pdfinfo import Colorspace, Encoding, PdfInfo
from ocrmypdf.subprocess import get_version
@@ -239,8 +239,8 @@ def test_german(resources, outdir):
def test_klingon(resources, outpdf):
p = run_ocrmypdf(resources / 'francais.pdf', outpdf, '-l', 'klz')
assert p.returncode == ExitCode.missing_dependency
with pytest.raises(MissingDependencyError):
run_ocrmypdf_api(resources / 'francais.pdf', outpdf, '-l', 'klz')
def test_missing_docinfo(resources, outpdf):
@@ -345,8 +345,8 @@ def test_tesseract_thresholding_invalid(value, resources, no_outpdf):
@pytest.mark.parametrize('renderer', RENDERERS)
def test_tesseract_crash(renderer, resources, no_outpdf):
p = run_ocrmypdf(
def test_tesseract_crash(renderer, resources, no_outpdf, caplog):
exitcode = run_ocrmypdf_api(
resources / 'ccitt.pdf',
no_outpdf,
'-v',
@@ -356,24 +356,22 @@ def test_tesseract_crash(renderer, resources, no_outpdf):
'--plugin',
'tests/plugins/tesseract_crash.py',
)
assert p.returncode == ExitCode.child_process_error
assert exitcode == ExitCode.child_process_error
assert not no_outpdf.exists()
assert "SubprocessOutputError" in p.stderr
assert "SubprocessOutputError" in caplog.text
def test_tesseract_crash_autorotate(resources, no_outpdf):
p = run_ocrmypdf(
def test_tesseract_crash_autorotate(resources, no_outpdf, caplog):
exitcode = run_ocrmypdf_api(
resources / 'ccitt.pdf',
no_outpdf,
'-r',
'--plugin',
'tests/plugins/tesseract_crash.py',
)
assert p.returncode == ExitCode.child_process_error
assert exitcode == ExitCode.child_process_error
assert not no_outpdf.exists()
assert "uncaught exception" in p.stderr
print(p.stdout)
print(p.stderr)
assert "uncaught exception" in caplog.text
@pytest.mark.parametrize('renderer', RENDERERS)
@@ -482,13 +480,13 @@ def protected_file(outdir):
os.name == 'nt' or os.geteuid() == 0, reason="root can write to anything"
)
def test_destination_not_writable(resources, protected_file):
p = run_ocrmypdf(
exitcode = run_ocrmypdf_api(
resources / 'jbig2.pdf',
protected_file,
'--plugin',
'tests/plugins/tesseract_noop.py',
)
assert p.returncode == ExitCode.file_access_error, "Expected error"
assert exitcode == ExitCode.file_access_error
@pytest.fixture
@@ -791,15 +789,18 @@ def test_pdfa_n(pdfa_level, resources, outpdf):
assert pdfa_info['conformance'] == f'PDF/A-{pdfa_level}B'
def test_decompression_bomb_error(resources, outpdf):
p = run_ocrmypdf(resources / 'hugemono.pdf', outpdf)
assert 'decompression bomb' in p.stderr and '--max-image-mpixels' in p.stderr
def test_decompression_bomb_error(resources, outpdf, caplog):
run_ocrmypdf_api(resources / 'hugemono.pdf', outpdf)
assert 'decompression bomb' in caplog.text
assert 'max-image-mpixels' in caplog.text
@pytest.mark.slow
def test_decompression_bomb_succeeds(resources, outpdf):
p = run_ocrmypdf(resources / 'hugemono.pdf', outpdf, '--max-image-mpixels', '2000')
assert p.returncode == 0
exitcode = run_ocrmypdf_api(
resources / 'hugemono.pdf', outpdf, '--max-image-mpixels', '2000'
)
assert exitcode == 0
def test_text_curves(resources, outpdf):
@@ -829,37 +830,37 @@ def test_text_curves_force(resources, outpdf):
assert len(info.pages[0].images) != 0, "force did not rasterize"
def test_output_is_dir(resources, outdir):
p = run_ocrmypdf(
def test_output_is_dir(resources, outdir, caplog):
exitcode = run_ocrmypdf_api(
resources / 'trivial.pdf',
outdir,
'--force-ocr',
'--plugin',
'tests/plugins/tesseract_noop.py',
)
assert p.returncode == ExitCode.file_access_error
assert 'is not a writable file' in p.stderr
assert exitcode == ExitCode.file_access_error
assert 'is not a writable file' in caplog.text
@pytest.mark.skipif(os.name == 'nt', reason="symlink needs admin permissions")
def test_output_is_symlink(resources, outdir):
sym = Path(outdir / 'this_is_a_symlink')
sym.symlink_to(outdir / 'out.pdf')
p = run_ocrmypdf(
exitcode = run_ocrmypdf_api(
resources / 'trivial.pdf',
sym,
'--force-ocr',
'--plugin',
'tests/plugins/tesseract_noop.py',
)
assert p.returncode == ExitCode.ok, p.stderr
assert exitcode == ExitCode.ok
assert (outdir / 'out.pdf').stat().st_size > 0, 'target file not created'
def test_livecycle(resources, no_outpdf):
p = run_ocrmypdf(resources / 'livecycle.pdf', no_outpdf)
def test_livecycle(resources, no_outpdf, caplog):
exitcode = run_ocrmypdf_api(resources / 'livecycle.pdf', no_outpdf)
assert p.returncode == ExitCode.input_file, p.stderr
assert exitcode == ExitCode.input_file, caplog.text
def test_version_check():
@@ -928,7 +929,7 @@ def test_outputtype_none_bad_setup(resources, outpdf):
def test_outputtype_none(resources, outtxt):
p = run_ocrmypdf(
exitcode = run_ocrmypdf_api(
resources / 'trivial.pdf',
'-',
'--output-type=none',
@@ -937,7 +938,8 @@ def test_outputtype_none(resources, outtxt):
'--plugin',
'tests/plugins/tesseract_noop.py',
)
assert p.returncode == ExitCode.ok
assert exitcode == ExitCode.ok
assert outtxt.exists()
@pytest.fixture