diff --git a/bypy/init_env.py b/bypy/init_env.py index 65dc650234..e955728f91 100644 --- a/bypy/init_env.py +++ b/bypy/init_env.py @@ -56,6 +56,7 @@ QT_DLLS = frozenset( QT_PLUGINS = [ 'imageformats', 'iconengines', + 'tls', # 'mediaservice', 'platforms', # 'playlistformats', diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py index f6bc4b05af..5b3bd63f12 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py @@ -9,9 +9,15 @@ __docformat__ = 'restructuredtext en' Test a binary calibre build to ensure that all needed binary images/libraries have loaded. ''' -import os, ctypes, sys, unittest, time, shutil, builtins +import builtins +import ctypes +import os +import shutil +import sys +import time +import unittest -from calibre.constants import iswindows, islinux, ismacos, plugins_loc +from calibre.constants import islinux, ismacos, iswindows, plugins_loc from polyglot.builtins import iteritems is_ci = os.environ.get('CI', '').lower() == 'true' @@ -98,7 +104,8 @@ class BuildTest(unittest.TestCase): parse('
xxx')
def test_bs4(self):
- import soupsieve, bs4
+ import bs4
+ import soupsieve
del soupsieve, bs4
@unittest.skipUnless(islinux, 'Speech dispatcher only used on Linux')
@@ -107,7 +114,9 @@ class BuildTest(unittest.TestCase):
del SSIPClient
def test_zeroconf(self):
- import zeroconf as z, ifaddr
+ import ifaddr
+ import zeroconf as z
+
from calibre.devices.smart_device_app.driver import monkeypatch_zeroconf
monkeypatch_zeroconf()
del z
@@ -143,8 +152,8 @@ class BuildTest(unittest.TestCase):
create_key_pair()
def test_msgpack(self):
- from calibre.utils.serialize import msgpack_dumps, msgpack_loads
from calibre.utils.date import utcnow
+ from calibre.utils.serialize import msgpack_dumps, msgpack_loads
for obj in ({1:1}, utcnow()):
s = msgpack_dumps(obj)
self.assertEqual(obj, msgpack_loads(s))
@@ -161,6 +170,7 @@ class BuildTest(unittest.TestCase):
@unittest.skipUnless(iswindows, 'winutil is windows only')
def test_winutil(self):
import tempfile
+
from calibre import strftime
from calibre_extensions import winutil
self.assertEqual(winutil.special_folder_path(winutil.CSIDL_APPDATA), winutil.known_folder_path(winutil.FOLDERID_RoamingAppData))
@@ -242,7 +252,7 @@ class BuildTest(unittest.TestCase):
dh = winutil.create_file(
dpath, winutil.FILE_LIST_DIRECTORY, winutil.FILE_SHARE_READ, winutil.OPEN_EXISTING, winutil.FILE_FLAG_BACKUP_SEMANTICS,
)
- from threading import Thread, Event
+ from threading import Event, Thread
started = Event()
events = []
@@ -293,12 +303,13 @@ class BuildTest(unittest.TestCase):
def test_qt(self):
if is_sanitized:
raise unittest.SkipTest('Skipping Qt build test as sanitizer is enabled')
- from qt.core import QTimer
- from qt.core import QApplication
+ from qt.core import (
+ QApplication, QFontDatabase, QImageReader, QNetworkAccessManager, QTimer, QSslSocket
+ )
from qt.webengine import QWebEnginePage
- from qt.core import QImageReader, QFontDatabase
- from qt.core import QNetworkAccessManager
+
from calibre.utils.img import image_from_data, image_to_data, test
+
# Ensure that images can be read before QApplication is constructed.
# Note that this requires QCoreApplication.libraryPaths() to return the
# path to the Qt plugins which it always does in the frozen build,
@@ -318,7 +329,7 @@ class BuildTest(unittest.TestCase):
# Run the imaging tests
test()
- from calibre.gui2 import ensure_app, destroy_app
+ from calibre.gui2 import destroy_app, ensure_app
from calibre.utils.webengine import setup_profile
display_env_var = os.environ.pop('DISPLAY', None)
try:
@@ -332,6 +343,7 @@ class BuildTest(unittest.TestCase):
create_cover('xxx', ['yyy'])
na = QNetworkAccessManager()
self.assertTrue(hasattr(na, 'sslErrors'), 'Qt not compiled with openssl')
+ self.assertTrue(QSslSocket.availableBackends(), 'Qt tls plugins missings')
p = QWebEnginePage()
setup_profile(p.profile())
@@ -370,10 +382,12 @@ class BuildTest(unittest.TestCase):
def test_imaging(self):
from PIL import Image
try:
- import _imaging, _imagingmath, _imagingft
+ import _imaging
+ import _imagingft
+ import _imagingmath
_imaging, _imagingmath, _imagingft
except ImportError:
- from PIL import _imaging, _imagingmath, _imagingft
+ from PIL import _imaging, _imagingft, _imagingmath
_imaging, _imagingmath, _imagingft
i = Image.open(I('lt.png', allow_user_override=False))
self.assertGreaterEqual(i.size, (20, 20))
@@ -409,8 +423,8 @@ class BuildTest(unittest.TestCase):
@unittest.skipUnless(getattr(sys, 'frozen', False), 'Only makes sense to test executables in frozen builds')
def test_executables(self):
- from calibre.utils.ipc.launch import Worker
from calibre.ebooks.pdf.pdftohtml import PDFTOHTML, PDFTOTEXT
+ from calibre.utils.ipc.launch import Worker
w = Worker({})
self.assertTrue(os.path.exists(w.executable), 'calibre-parallel (%s) does not exist' % w.executable)
self.assertTrue(os.path.exists(w.gui_executable), 'calibre-parallel-gui (%s) does not exist' % w.gui_executable)
@@ -442,18 +456,19 @@ class BuildTest(unittest.TestCase):
del html2text
def test_markdown(self):
- from calibre.ebooks.txt.processor import create_markdown_object
from calibre.ebooks.conversion.plugins.txt_input import MD_EXTENSIONS
+ from calibre.ebooks.txt.processor import create_markdown_object
create_markdown_object(sorted(MD_EXTENSIONS))
from calibre.library.comments import sanitize_comments_html
sanitize_comments_html(b'''xxx''')
def test_feedparser(self):
- from calibre.web.feeds.feedparser import parse
# sgmllib is needed for feedparser parsing malformed feeds
# on python3 you can get it by taking it from python2 stdlib and
# running 2to3 on it
import sgmllib
+
+ from calibre.web.feeds.feedparser import parse
sgmllib, parse
def test_openssl(self):
@@ -466,7 +481,7 @@ class BuildTest(unittest.TestCase):
def test_multiprocessing():
- from multiprocessing import get_context, get_all_start_methods
+ from multiprocessing import get_all_start_methods, get_context
for stype in get_all_start_methods():
if stype == 'fork':
continue