From 65c11b0a8c178cdda1c4c2596e2016db0003576f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 27 Nov 2015 17:34:42 +0530 Subject: [PATCH] Add build test for image compression utils --- src/calibre/srv/utils.py | 3 +++ src/calibre/test_build.py | 21 ++++++++++++++++++++- src/calibre/utils/img.py | 4 ++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/calibre/srv/utils.py b/src/calibre/srv/utils.py index 1c4b891e11..63765cd969 100644 --- a/src/calibre/srv/utils.py +++ b/src/calibre/srv/utils.py @@ -466,3 +466,6 @@ class ReadOnlyFileBuffer(object): def getvalue(self): return self.mv + def close(self): + pass + diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py index d0799cf96f..a7208699f6 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py @@ -12,8 +12,10 @@ __docformat__ = 'restructuredtext en' Test a binary calibre build to ensure that all needed binary images/libraries have loaded. ''' -import cStringIO, os, ctypes +import cStringIO, os, ctypes, shutil +from calibre import CurrentDir from calibre.constants import plugins, iswindows, islinux, isosx +from calibre.ptempfile import TemporaryDirectory def test_dlls(): import win32api @@ -239,10 +241,27 @@ def test_markdown(): sanitize_html(b'''xxx''') print('Markdown OK!') +def test_image_compression(): + from calibre.utils.img import optimize_png, optimize_jpeg, encode_jpeg + with TemporaryDirectory() as tdir, CurrentDir(tdir): + shutil.copyfile(I('devices/kindle.jpg'), 'test.jpg') + ret = optimize_jpeg('test.jpg') + if ret is not None: + raise SystemExit(ret) + ret = encode_jpeg('test.jpg') + if ret is not None: + raise SystemExit(ret) + shutil.copyfile(I('lt.png'), 'test.png') + ret = optimize_png('test.png') + if ret is not None: + raise SystemExit(ret) + print('Image compression OK!') + def test(): if iswindows: test_dlls() test_plugins() + test_image_compression() test_lzma() test_dukpy() test_spell() diff --git a/src/calibre/utils/img.py b/src/calibre/utils/img.py index bd91b64f38..5a1426505d 100644 --- a/src/calibre/utils/img.py +++ b/src/calibre/utils/img.py @@ -98,7 +98,7 @@ def run_optimizer(file_path, cmd, as_filter=False, input_data=None): inw = Thread(name='CopyInput', target=copy, args=(src, p.stdin)) inw.daemon = True inw.start() - outw = Thread('CopyOutput', target=copy, args=(p.stdout, outf)) + outw = Thread(name='CopyOutput', target=copy, args=(p.stdout, outf)) outw.daemon = True outw.start() raw = force_unicode(stderr.read()) @@ -137,4 +137,4 @@ def encode_jpeg(file_path, quality=80): buf.open(QBuffer.WriteOnly) if not img.save(buf, 'PPM'): raise ValueError('Failed to export image to PPM') - return run_optimizer(file_path, cmd, as_filter=True, input_data=ReadOnlyFileBuffer(ba.data)) + return run_optimizer(file_path, cmd, as_filter=True, input_data=ReadOnlyFileBuffer(ba.data()))