diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py
index 29c1b848bd..7871be7685 100644
--- a/src/calibre/test_build.py
+++ b/src/calibre/test_build.py
@@ -12,10 +12,12 @@ __docformat__ = 'restructuredtext en'
Test a binary calibre build to ensure that all needed binary images/libraries have loaded.
'''
-import cStringIO, os, ctypes, shutil, sys
-from calibre import CurrentDir
+import cStringIO, os, ctypes, sys
from calibre.constants import plugins, iswindows, islinux, isosx
-from calibre.ptempfile import TemporaryDirectory
+
+def fprint(*args, **kwargs):
+ print(*args, **kwargs)
+ sys.stdout.flush()
def test_dlls():
import win32api
@@ -27,11 +29,11 @@ def test_dlls():
ctypes.WinDLL(os.path.join(base, x))
except Exception as err:
errors.append('Failed to load DLL %s with error: %s' % (x, err))
- print (errors[-1])
+ fprint(errors[-1])
if errors:
- print ('Loading %d dll(s) failed!' % len(errors))
+ fprint('Loading %d dll(s) failed!' % len(errors))
raise SystemExit(1)
- print ('DLLs OK!')
+ fprint('DLLs OK!')
def test_dbus():
@@ -43,28 +45,28 @@ def test_dbus():
if not bus.list_names():
raise ValueError('Failed to list names on the session bus')
del bus
- print ('dbus OK!')
+ fprint('dbus OK!')
def test_regex():
import regex
if regex.findall(r'(?i)(a)(b)', 'ab cd AB 1a1b') != [('a', 'b'), ('A', 'B')]:
raise ValueError('regex module failed on a simple search')
- print ('regex OK!')
+ fprint('regex OK!')
def test_lzma():
from lzma.xz import test_lzma2
test_lzma2()
- print ('lzma OK!')
+ fprint('lzma OK!')
def test_html5lib():
import html5lib.html5parser # noqa
from html5lib import parse # noqa
- print ('html5lib OK!')
+ fprint('html5lib OK!')
def test_spell():
from calibre.spell.dictionary import test_dictionaries
test_dictionaries()
- print ('hunspell OK!')
+ fprint('hunspell OK!')
def test_plugins():
bad = []
@@ -74,9 +76,9 @@ def test_plugins():
bad.append((name, err))
if bad:
for name, err in bad:
- print ('Failed to load plugin:', name, 'with error:\n', err, '\n')
+ fprint('Failed to load plugin:', name, 'with error:\n', err, '\n')
raise SystemExit(1)
- print ('Loaded all plugins successfully!')
+ fprint('Loaded all plugins successfully!')
def test_lxml():
from calibre.utils.cleantext import test_clean_xml_chars
@@ -85,7 +87,7 @@ def test_lxml():
raw = ''
root = etree.fromstring(raw)
if etree.tostring(root) == raw:
- print ('lxml OK!')
+ fprint('lxml OK!')
else:
raise RuntimeError('lxml failed')
@@ -96,7 +98,7 @@ def test_certgen():
def test_fsevents():
from fsevents import Observer, Stream
del Observer, Stream
- print ('macfsevents OK!')
+ fprint('macfsevents OK!')
def test_winutil():
from calibre.devices.scanner import win_pnp_drives
@@ -105,11 +107,11 @@ def test_winutil():
try:
matches = win_pnp_drives.scanner()
except winutil.DriveError:
- print ('No removable drives found, skipping win_pnp_drives test!')
+ fprint('No removable drives found, skipping win_pnp_drives test!')
return
if len(matches) < 1:
raise RuntimeError('win_pnp_drives returned no drives')
- print ('win_pnp_drives OK!')
+ fprint('win_pnp_drives OK!')
def test_sqlite():
import sqlite3
@@ -117,13 +119,13 @@ def test_sqlite():
from calibre.library.sqlite import load_c_extensions
if not load_c_extensions(conn, True):
raise RuntimeError('Failed to load sqlite extension')
- print ('sqlite OK!')
+ fprint('sqlite OK!')
def test_apsw():
import apsw
conn = apsw.Connection(':memory:')
conn.close()
- print ('apsw OK!')
+ fprint('apsw OK!')
def test_qt():
from calibre.gui2 import Application
@@ -145,13 +147,13 @@ def test_qt():
raise RuntimeError('Qt not compiled with openssl')
del na
del app
- print ('Qt OK!')
+ fprint('Qt OK!')
def test_imaging():
from calibre.ebooks import calibre_cover
data = calibre_cover('test', 'ok')
if len(data) > 1000:
- print ('ImageMagick OK!')
+ fprint('ImageMagick OK!')
else:
raise RuntimeError('ImageMagick choked!')
from PIL import Image
@@ -164,39 +166,39 @@ def test_imaging():
i = Image.open(cStringIO.StringIO(data))
if i.size < (20, 20):
raise RuntimeError('PIL choked!')
- print ('PIL OK!')
+ fprint('PIL OK!')
def test_unrar():
from calibre.utils.unrar import test_basic
test_basic()
- print ('Unrar OK!')
+ fprint('Unrar OK!')
def test_ssl():
import ssl
ssl
- print ('SSL OK!')
+ fprint('SSL OK!')
def test_icu():
- print ('Testing ICU')
+ fprint('Testing ICU')
from calibre.utils.icu_test import test_build
test_build()
- print ('ICU OK!')
+ fprint('ICU OK!')
def test_dukpy():
- print ('Testing dukpy')
+ fprint('Testing dukpy')
from duktape import test_build
test_build()
- print ('dukpy OK!')
+ fprint('dukpy OK!')
def test_wpd():
wpd = plugins['wpd'][0]
try:
wpd.init('calibre', 1, 1, 1)
except wpd.NoWPD:
- print ('This computer does not have WPD')
+ fprint('This computer does not have WPD')
else:
wpd.uninit()
- print ('WPD OK!')
+ fprint('WPD OK!')
def test_magick():
from calibre.utils.magick import create_canvas
@@ -204,17 +206,17 @@ def test_magick():
from calibre.gui2.tweak_book.editor.canvas import qimage_to_magick, magick_to_qimage
img = magick_to_qimage(i)
i = qimage_to_magick(img)
- print ('magick OK!')
+ fprint('magick OK!')
def test_tokenizer():
- print ('Testing tinycss tokenizer')
+ fprint('Testing tinycss tokenizer')
from tinycss.tokenizer import c_tokenize_flat
if c_tokenize_flat is None:
raise ValueError('tinycss C tokenizer not loaded')
import tinycss.tests.main as m
if getattr(m, '__file__', None) and os.path.exists(m.__file__):
m.run_tests(for_build=True)
- print('tinycss tokenizer OK!')
+ fprint('tinycss tokenizer OK!')
def test_executables():
from calibre.utils.ipc.launch import Worker
@@ -232,51 +234,40 @@ def test_executables():
if not os.path.exists(PDFTOHTML):
raise SystemExit('pdftohtml (%s) does not exist' % PDFTOHTML)
- print('executables OK!')
+ fprint('executables OK!')
def test_netifaces():
import netifaces
if len(netifaces.interfaces()) < 1:
raise ValueError('netifaces could find no network interfaces')
- print ('netifaces OK!')
+ fprint('netifaces OK!')
def test_psutil():
import psutil
psutil.Process(os.getpid())
- print ('psutil OK!')
+ fprint('psutil OK!')
def test_podofo():
from calibre.utils.podofo import test_podofo as dotest
dotest()
- print ('podofo OK!')
+ fprint('podofo OK!')
def test_terminal():
import readline
del readline
- print ('readline OK!')
+ fprint('readline OK!')
def test_markdown():
from calibre.ebooks.markdown import Markdown
Markdown(extensions=['extra'])
from calibre.library.comments import sanitize_html
sanitize_html(b'''xxx
''')
- print('Markdown OK!')
+ fprint('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!')
+ from calibre.utils.img import test
+ test()
+ fprint('Image compression OK!')
def test():
if iswindows:
@@ -316,4 +307,3 @@ def test():
if __name__ == '__main__':
test()
-