From 91d715ac934d0f8c357b335678eea95f26b0c298 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Wed, 3 Aug 2016 02:47:18 -0700 Subject: [PATCH] Add test cases for --output-type --- ocrmypdf/pdfa.py | 2 ++ tests/test_main.py | 52 +++++++++++++++++++++++++++------------------- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/ocrmypdf/pdfa.py b/ocrmypdf/pdfa.py index 7985a5ba..2acee61e 100644 --- a/ocrmypdf/pdfa.py +++ b/ocrmypdf/pdfa.py @@ -130,6 +130,7 @@ def file_claims_pdfa(filename): pdfa_dict = {attr.localName: attr.value for attr in pdfa_nodes} pdfa_dict['pass'] = False + pdfa_dict['output'] = 'pdf' if pdfa_dict: part_conformance = pdfa_dict['part'] + pdfa_dict['conformance'] valid_part_conforms = {'1A', '1B', '2A', '2B', '2U', '3A', '3B', '3U'} @@ -139,6 +140,7 @@ def file_claims_pdfa(filename): if part_conformance in valid_part_conforms: pdfa_dict['pass'] = True + pdfa_dict['output'] = 'pdfa' pdfa_dict['message'] = message else: pdfa_dict['message'] = 'File is a regular PDF' diff --git a/tests/test_main.py b/tests/test_main.py index 1bd9f7b0..6a99ec79 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -12,6 +12,7 @@ from ocrmypdf.pageinfo import pdf_get_all_pageinfo import PyPDF2 as pypdf from ocrmypdf import ExitCode from ocrmypdf import leptonica +from ocrmypdf.pdfa import file_claims_pdfa if sys.version_info.major < 3: @@ -159,34 +160,34 @@ def test_deskew(spoof_tesseract_noop): def test_clean(spoof_tesseract_noop): - check_ocrmypdf('skew.pdf', 'test_clean.pdf', '-c', env=spoof_tesseract_noop) + check_ocrmypdf('skew.pdf', 'test_clean.pdf', '-c', + env=spoof_tesseract_noop) -@pytest.mark.parametrize("pdf,renderer", [ - ('palette.pdf', 'hocr'), - ('palette.pdf', 'tesseract'), - ('cmyk.pdf', 'hocr'), - ('cmyk.pdf', 'tesseract'), - ('ccitt.pdf', 'hocr'), - ('ccitt.pdf', 'tesseract'), - ('jbig2.pdf', 'hocr'), - ('jbig2.pdf', 'tesseract'), - ('lichtenstein.pdf', 'hocr'), - ('lichtenstein.pdf', 'tesseract') -]) -def test_exotic_image(spoof_tesseract_cache, pdf, renderer): +# This will run 5 * 2 * 2 = 20 test cases +@pytest.mark.parametrize( + "pdf", + ['palette.pdf', 'cmyk.pdf', 'ccitt.pdf', 'jbig2.pdf', 'lichtenstein.pdf']) +@pytest.mark.parametrize("renderer", ['hocr', 'tesseract']) +@pytest.mark.parametrize("output_type", ['pdf', 'pdfa']) +def test_exotic_image(spoof_tesseract_cache, pdf, renderer, output_type): check_ocrmypdf( pdf, 'test_{0}_{1}.pdf'.format(pdf, renderer), '-dc', '-v', '1', + '--output-type', output_type, '--pdf-renderer', renderer, env=spoof_tesseract_cache) -def test_preserve_metadata(spoof_tesseract_noop): +@pytest.mark.parametrize("output_type", [ + 'pdfa', 'pdf' + ]) +def test_preserve_metadata(spoof_tesseract_noop, output_type): pdf_before = pypdf.PdfFileReader(_infile('graph.pdf')) output = check_ocrmypdf('graph.pdf', 'test_metadata_preserve.pdf', + '--output-type', output_type, env=spoof_tesseract_noop) pdf_after = pypdf.PdfFileReader(output) @@ -194,8 +195,14 @@ def test_preserve_metadata(spoof_tesseract_noop): for key in ('/Title', '/Author'): assert pdf_before.documentInfo[key] == pdf_after.documentInfo[key] + pdfa_info = file_claims_pdfa(output) + assert pdfa_info['output'] == output_type -def test_override_metadata(spoof_tesseract_noop): + +@pytest.mark.parametrize("output_type", [ + 'pdfa', 'pdf' + ]) +def test_override_metadata(spoof_tesseract_noop, output_type): input_file = _infile('c02-22.pdf') output_file = _outfile('test_override_metadata.pdf') @@ -208,6 +215,7 @@ def test_override_metadata(spoof_tesseract_noop): '--title', german, '--author', chinese, '--subject', high_unicode, + '--output-type', output_type, env=spoof_tesseract_noop) assert p.returncode == ExitCode.ok @@ -226,6 +234,9 @@ def test_override_metadata(spoof_tesseract_noop): assert pdfinfo['Subject'] == high_unicode assert pdfinfo.get('Keywords', '') == '' + pdfa_info = file_claims_pdfa(output_file) + assert pdfa_info['output'] == output_type + @pytest.mark.parametrize('renderer', [ 'hocr', @@ -386,16 +397,15 @@ def test_skip_big(spoof_tesseract_cache): assert not pdfinfo[0]['has_text'] -@pytest.mark.parametrize('renderer', [ - 'hocr', - 'tesseract', - ]) -def test_maximum_options(spoof_tesseract_cache, renderer): +@pytest.mark.parametrize('renderer', ['hocr', 'tesseract']) +@pytest.mark.parametrize('output_type', ['pdf', 'pdfa']) +def test_maximum_options(spoof_tesseract_cache, renderer, output_type): check_ocrmypdf( 'multipage.pdf', 'test_multipage%s.pdf' % renderer, '-d', '-c', '-i', '-g', '-f', '-k', '--oversample', '300', '--skip-big', '10', '--title', 'Too Many Weird Files', '--author', 'py.test', '--pdf-renderer', renderer, + '--output-type', output_type, env=spoof_tesseract_cache)