From 12a2f78c4dda83c50ba1b484a0f29f5adc8a0a6e Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Thu, 14 May 2020 03:19:22 -0700 Subject: [PATCH] Fix validation of languages not using tesseract_env And some related issues. --- src/ocrmypdf/_validation.py | 4 ++-- tests/conftest.py | 3 ++- tests/test_main.py | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ocrmypdf/_validation.py b/src/ocrmypdf/_validation.py index 16096aa3..2fc85928 100644 --- a/src/ocrmypdf/_validation.py +++ b/src/ocrmypdf/_validation.py @@ -84,12 +84,12 @@ def check_options_languages(options): options.language = options.language[0].split('+') languages = set(options.language) - if not languages.issubset(tesseract.languages()): + if not languages.issubset(tesseract.languages(options.tesseract_env)): msg = ( "The installed version of tesseract does not have language " "data for the following requested languages: \n" ) - for lang in languages - tesseract.languages(): + for lang in languages - tesseract.languages(options.tesseract_env): msg += lang + '\n' raise MissingDependencyError(msg) diff --git a/tests/conftest.py b/tests/conftest.py index 9599369a..6ea95e96 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -241,7 +241,7 @@ def run_ocrmypdf_api(input_file, output_file, *args, env=None): [str(input_file), str(output_file)] + [str(arg) for arg in args if arg is not None] ) - api.check_options(options) + if env: options.tesseract_env = env.copy() options.tesseract_env['_OCRMYPDF_TEST_INFILE'] = os.fspath(input_file) @@ -252,6 +252,7 @@ def run_ocrmypdf_api(input_file, output_file, *args, env=None): if options.tesseract_env: assert all(isinstance(v, (str, bytes)) for v in options.tesseract_env.values()) + api.check_options(options) return api.run_pipeline(options, plugin_manager=None, api=False) diff --git a/tests/test_main.py b/tests/test_main.py index 9fcb49d7..0fc11e76 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -186,10 +186,10 @@ def test_tesseract_missing_tessdata(resources, no_outpdf, tmpdir): env = os.environ.copy() env['TESSDATA_PREFIX'] = os.fspath(tmpdir) - returncode = run_ocrmypdf_api( - resources / 'graph.pdf', no_outpdf, '-v', '1', '--skip-text', env=env - ) - assert returncode == ExitCode.missing_dependency + with pytest.raises(MissingDependencyError): + run_ocrmypdf_api( + resources / 'graph.pdf', no_outpdf, '-v', '1', '--skip-text', env=env + ) def test_invalid_input_pdf(resources, no_outpdf):