From a80ebf3b64dce807d84ab3993984c211f55b47db Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Wed, 27 Mar 2013 12:21:10 +0200 Subject: add pdf media type The new media type supports pdf and a subset of media recognized by libreoffice via unoconv. Every document added goes through: * conversion to pdf with unoconv if not already a pdf * creation of thumbnail and medium sized image, and pdfinfo generates some information (even for unoconv produces docs - should fix this) Poppler (pdftocairo, pdfinfo) is used. http://poppler.freedesktop.org/ A working but uglified pdf.js integration exists, which is enabled by setting pdf.pdf_js=true mediagoblin_local.ini (disabled in mediagoblin.ini) Adds one test to the test_submission test suite, and another separate test_pdf suite. The tests are only run if media_types.pdf.processing.check_prerequisites passes, so the test suite will not require any extra package. TODO: make test suite say 'skipped' in that case instead of just 'ok' Signed-off-by: Alon Levy --- mediagoblin/tests/test_pdf.py | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 mediagoblin/tests/test_pdf.py (limited to 'mediagoblin/tests/test_pdf.py') diff --git a/mediagoblin/tests/test_pdf.py b/mediagoblin/tests/test_pdf.py new file mode 100644 index 00000000..ee3083ef --- /dev/null +++ b/mediagoblin/tests/test_pdf.py @@ -0,0 +1,45 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2013 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import tempfile +import shutil +import os + +from mediagoblin.tests.tools import fixture_add_collection, fixture_add_user, \ + get_app +from mediagoblin.db.models import Collection, User +from mediagoblin.db.base import Session +from nose.tools import assert_equal + +from mediagoblin.media_types.pdf.processing import ( + pdf_info, check_prerequisites, create_pdf_thumb) + +GOOD='mediagoblin/tests/test_submission/good.pdf' + +def test_pdf(): + if not check_prerequisites(): + return + good_dict = {'pdf_version_major': 1, 'pdf_title': '', + 'pdf_page_size_width': 612, 'pdf_author': '', + 'pdf_keywords': '', 'pdf_pages': 10, + 'pdf_producer': 'dvips + GNU Ghostscript 7.05', + 'pdf_version_minor': 3, + 'pdf_creator': 'LaTeX with hyperref package', + 'pdf_page_size_height': 792} + assert pdf_info(GOOD) == good_dict + temp_dir = tempfile.mkdtemp() + create_pdf_thumb(GOOD, os.path.join(temp_dir, 'good_256_256.png'), 256, 256) + shutil.rmtree(temp_dir) -- cgit v1.2.3 From 455f2d6506929a4dc32a843cb633c9415daf5b00 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Mon, 15 Apr 2013 15:55:24 -0500 Subject: Removing unused imports --- mediagoblin/tests/test_pdf.py | 5 ----- 1 file changed, 5 deletions(-) (limited to 'mediagoblin/tests/test_pdf.py') diff --git a/mediagoblin/tests/test_pdf.py b/mediagoblin/tests/test_pdf.py index ee3083ef..a3979a25 100644 --- a/mediagoblin/tests/test_pdf.py +++ b/mediagoblin/tests/test_pdf.py @@ -18,11 +18,6 @@ import tempfile import shutil import os -from mediagoblin.tests.tools import fixture_add_collection, fixture_add_user, \ - get_app -from mediagoblin.db.models import Collection, User -from mediagoblin.db.base import Session -from nose.tools import assert_equal from mediagoblin.media_types.pdf.processing import ( pdf_info, check_prerequisites, create_pdf_thumb) -- cgit v1.2.3 From 54b3113abc464f1401cda60b236e134935649f9a Mon Sep 17 00:00:00 2001 From: Elrond Date: Mon, 15 Apr 2013 23:34:27 +0200 Subject: PDF: Use pytest.mark.skipif for skipping tests Instead of leaving test early if they can not run, use the pytest.mark.skipif marked to tell the test system not to even run the test. This also adds to the stats, because skipped tests are counted differently. Thus making it obvious, that some tests did not run, because of any reason. --- mediagoblin/tests/test_pdf.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'mediagoblin/tests/test_pdf.py') diff --git a/mediagoblin/tests/test_pdf.py b/mediagoblin/tests/test_pdf.py index a3979a25..b8c21bdb 100644 --- a/mediagoblin/tests/test_pdf.py +++ b/mediagoblin/tests/test_pdf.py @@ -17,16 +17,15 @@ import tempfile import shutil import os - +import pytest from mediagoblin.media_types.pdf.processing import ( pdf_info, check_prerequisites, create_pdf_thumb) GOOD='mediagoblin/tests/test_submission/good.pdf' +@pytest.mark.skipif("not check_prerequisites()") def test_pdf(): - if not check_prerequisites(): - return good_dict = {'pdf_version_major': 1, 'pdf_title': '', 'pdf_page_size_width': 612, 'pdf_author': '', 'pdf_keywords': '', 'pdf_pages': 10, -- cgit v1.2.3 From b698c94d035ec0ac5a5f695babf6f84c354510f5 Mon Sep 17 00:00:00 2001 From: Elrond Date: Tue, 16 Apr 2013 00:33:38 +0200 Subject: Refactor test resources into new resources.py --- mediagoblin/tests/test_pdf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mediagoblin/tests/test_pdf.py') diff --git a/mediagoblin/tests/test_pdf.py b/mediagoblin/tests/test_pdf.py index b8c21bdb..b4d1940a 100644 --- a/mediagoblin/tests/test_pdf.py +++ b/mediagoblin/tests/test_pdf.py @@ -21,8 +21,8 @@ import pytest from mediagoblin.media_types.pdf.processing import ( pdf_info, check_prerequisites, create_pdf_thumb) +from .resources import GOOD_PDF as GOOD -GOOD='mediagoblin/tests/test_submission/good.pdf' @pytest.mark.skipif("not check_prerequisites()") def test_pdf(): -- cgit v1.2.3 From 0536306048daa0970d2e43411ba2a9bf073e570e Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Thu, 16 May 2013 17:51:21 -0500 Subject: Always activate testing in every test module ever. Kind of a dorky way to implement this, but... --- mediagoblin/tests/test_pdf.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'mediagoblin/tests/test_pdf.py') diff --git a/mediagoblin/tests/test_pdf.py b/mediagoblin/tests/test_pdf.py index b4d1940a..e86409fe 100644 --- a/mediagoblin/tests/test_pdf.py +++ b/mediagoblin/tests/test_pdf.py @@ -22,6 +22,9 @@ import pytest from mediagoblin.media_types.pdf.processing import ( pdf_info, check_prerequisites, create_pdf_thumb) from .resources import GOOD_PDF as GOOD +from mediagoblin.tools.testing import _activate_testing + +_activate_testing() @pytest.mark.skipif("not check_prerequisites()") -- cgit v1.2.3 From 9a9bafc078192317695a4f06233ea261fe147989 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Fri, 17 May 2013 11:12:56 -0500 Subject: Reverting "Always activate testing in every test module ever." Revert "Always activate testing in every test module ever." This reverts commit 0536306048daa0970d2e43411ba2a9bf073e570e. --- mediagoblin/tests/test_pdf.py | 3 --- 1 file changed, 3 deletions(-) (limited to 'mediagoblin/tests/test_pdf.py') diff --git a/mediagoblin/tests/test_pdf.py b/mediagoblin/tests/test_pdf.py index e86409fe..b4d1940a 100644 --- a/mediagoblin/tests/test_pdf.py +++ b/mediagoblin/tests/test_pdf.py @@ -22,9 +22,6 @@ import pytest from mediagoblin.media_types.pdf.processing import ( pdf_info, check_prerequisites, create_pdf_thumb) from .resources import GOOD_PDF as GOOD -from mediagoblin.tools.testing import _activate_testing - -_activate_testing() @pytest.mark.skipif("not check_prerequisites()") -- cgit v1.2.3