Add build test for image compression utils

This commit is contained in:
Kovid Goyal 2015-11-27 17:34:42 +05:30
parent a7489de7cb
commit 65c11b0a8c
3 changed files with 25 additions and 3 deletions

View File

@ -466,3 +466,6 @@ class ReadOnlyFileBuffer(object):
def getvalue(self):
return self.mv
def close(self):
pass

View File

@ -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'''<script>moo</script>xxx<img src="http://moo.com/x.jpg">''')
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()

View File

@ -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()))