From 2541f6cf899f3e7e282c92de403598dabf3fecd4 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Tue, 12 May 2020 01:05:57 -0700 Subject: [PATCH] Fix missing jbig2enc reported as error with -O3 instead of warning Fixes #558 --- src/ocrmypdf/exec/__init__.py | 8 ++++---- tests/test_validation.py | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/ocrmypdf/exec/__init__.py b/src/ocrmypdf/exec/__init__.py index 92e4d956..f235b6e8 100644 --- a/src/ocrmypdf/exec/__init__.py +++ b/src/ocrmypdf/exec/__init__.py @@ -233,10 +233,10 @@ def _error_trailer(program, package, **kwargs): def _error_missing_program(program, package, required_for, recommended): - if required_for: + if recommended: + log.warning(missing_recommend_program.format(**locals())) + elif required_for: log.error(missing_optional_program.format(**locals())) - elif recommended: - log.info(missing_recommend_program.format(**locals())) else: log.error(missing_program.format(**locals())) _error_trailer(**locals()) @@ -279,7 +279,7 @@ def check_external_program( found_version = remove_leading_v(found_version) need_version = remove_leading_v(need_version) - if LooseVersion(found_version) < LooseVersion(need_version): + if found_version and LooseVersion(found_version) < LooseVersion(need_version): _error_old_version(program, package, need_version, found_version, required_for) if not recommended: raise MissingDependencyError() diff --git a/tests/test_validation.py b/tests/test_validation.py index af1eadea..199cfcd2 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -210,3 +210,24 @@ def test_version_comparison(): version_checker=lambda: '1.0', need_version='2.0', ) + + +def test_optional_program_recommended(caplog): + caplog.clear() + + def raiser(): + raise FileNotFoundError('jbig2') + + with caplog.at_level(logging.WARNING): + vd.check_external_program( + program="jbig2", + package="jbig2enc", + version_checker=raiser, + need_version='42', + required_for='this test case', + recommended=True, + ) + assert any( + (loglevel == logging.WARNING and "recommended" in msg) + for _logger_name, loglevel, msg in caplog.record_tuples + )