From bc56b8e0587fbd6ad93397fbf4728d38a3aad200 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 26 Mar 2018 01:49:25 -0700 Subject: [PATCH] Move metadata tests to new test_metadata --- tests/test_main.py | 66 ----------------------------- tests/test_metadata.py | 96 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 66 deletions(-) create mode 100644 tests/test_metadata.py diff --git a/tests/test_main.py b/tests/test_main.py index a761edb4..35fc2cbb 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -26,7 +26,6 @@ from ocrmypdf.pdfinfo import PdfInfo, Colorspace, Encoding import PyPDF2 as pypdf from ocrmypdf.exceptions import ExitCode from ocrmypdf import leptonica -from ocrmypdf.pdfa import file_claims_pdfa from ocrmypdf.exec import ghostscript, tesseract, qpdf import logging from math import isclose @@ -174,71 +173,6 @@ def test_exotic_image(spoof_tesseract_cache, pdf, renderer, output_type, assert outfile.with_suffix('.pdf.txt').exists() -@pytest.mark.parametrize("output_type", [ - 'pdfa', 'pdf' - ]) -def test_preserve_metadata(spoof_tesseract_noop, output_type, - resources, outpdf): - pdf_before = pypdf.PdfFileReader(str(resources / 'graph.pdf')) - - output = check_ocrmypdf( - resources / 'graph.pdf', outpdf, - '--output-type', output_type, - env=spoof_tesseract_noop) - - pdf_after = pypdf.PdfFileReader(str(output)) - - for key in ('/Title', '/Author'): - assert pdf_before.documentInfo[key] == pdf_after.documentInfo[key] - - pdfa_info = file_claims_pdfa(str(output)) - assert pdfa_info['output'] == output_type - - -@pytest.mark.parametrize("output_type", [ - 'pdfa', 'pdf' - ]) -def test_override_metadata(spoof_tesseract_noop, output_type, resources, - outpdf): - input_file = resources / 'c02-22.pdf' - german = 'Du siehst den Wald vor lauter Bäumen nicht.' - chinese = '孔子' - - p, out, err = run_ocrmypdf( - input_file, outpdf, - '--title', german, - '--author', chinese, - '--output-type', output_type, - env=spoof_tesseract_noop) - - assert p.returncode == ExitCode.ok, err - - reader = pypdf.PdfFileReader(outpdf) - - assert reader.documentInfo['/Title'] == german - assert reader.documentInfo['/Author'] == chinese - assert reader.documentInfo.get('/Keywords', '') == '' - - pdfa_info = file_claims_pdfa(outpdf) - assert pdfa_info['output'] == output_type - - -def test_high_unicode(spoof_tesseract_noop, resources, no_outpdf): - - # Ghostscript doesn't support high Unicode, so neither do we, to be - # safe - input_file = resources / 'c02-22.pdf' - high_unicode = 'U+1030C is: 𐌌' - - p, out, err = run_ocrmypdf( - input_file, no_outpdf, - '--subject', high_unicode, - '--output-type', 'pdfa', - env=spoof_tesseract_noop) - - assert p.returncode == ExitCode.bad_args, err - - @pytest.mark.parametrize('renderer', RENDERERS) def test_oversample(spoof_tesseract_cache, renderer, resources, outpdf): oversampled_pdf = check_ocrmypdf( diff --git a/tests/test_metadata.py b/tests/test_metadata.py new file mode 100644 index 00000000..fdb301c3 --- /dev/null +++ b/tests/test_metadata.py @@ -0,0 +1,96 @@ +# © 2018 James R. Barlow: github.com/jbarlow83 +# +# This file is part of OCRmyPDF. +# +# OCRmyPDF is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OCRmyPDF is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OCRmyPDF. If not, see . + + +import pytest +import PyPDF2 as pypdf + +from ocrmypdf.pdfa import file_claims_pdfa +from ocrmypdf.exceptions import ExitCode + +# pytest.helpers is dynamic +# pylint: disable=no-member +# pylint: disable=w0612 + +check_ocrmypdf = pytest.helpers.check_ocrmypdf +run_ocrmypdf = pytest.helpers.run_ocrmypdf +spoof = pytest.helpers.spoof + + +@pytest.mark.parametrize("output_type", [ + 'pdfa', 'pdf' + ]) +def test_preserve_metadata(spoof_tesseract_noop, output_type, + resources, outpdf): + pdf_before = pypdf.PdfFileReader(str(resources / 'graph.pdf')) + + output = check_ocrmypdf( + resources / 'graph.pdf', outpdf, + '--output-type', output_type, + env=spoof_tesseract_noop) + + pdf_after = pypdf.PdfFileReader(str(output)) + + for key in ('/Title', '/Author'): + assert pdf_before.documentInfo[key] == pdf_after.documentInfo[key] + + pdfa_info = file_claims_pdfa(str(output)) + assert pdfa_info['output'] == output_type + + +@pytest.mark.parametrize("output_type", [ + 'pdfa', 'pdf' + ]) +def test_override_metadata(spoof_tesseract_noop, output_type, resources, + outpdf): + input_file = resources / 'c02-22.pdf' + german = 'Du siehst den Wald vor lauter Bäumen nicht.' + chinese = '孔子' + + p, out, err = run_ocrmypdf( + input_file, outpdf, + '--title', german, + '--author', chinese, + '--output-type', output_type, + env=spoof_tesseract_noop) + + assert p.returncode == ExitCode.ok, err + + reader = pypdf.PdfFileReader(outpdf) + + assert reader.documentInfo['/Title'] == german + assert reader.documentInfo['/Author'] == chinese + assert reader.documentInfo.get('/Keywords', '') == '' + + pdfa_info = file_claims_pdfa(outpdf) + assert pdfa_info['output'] == output_type + + +def test_high_unicode(spoof_tesseract_noop, resources, no_outpdf): + + # Ghostscript doesn't support high Unicode, so neither do we, to be + # safe + input_file = resources / 'c02-22.pdf' + high_unicode = 'U+1030C is: 𐌌' + + p, out, err = run_ocrmypdf( + input_file, no_outpdf, + '--subject', high_unicode, + '--output-type', 'pdfa', + env=spoof_tesseract_noop) + + assert p.returncode == ExitCode.bad_args, err \ No newline at end of file