on master help sign in
Merge pull request #2160 from dalf/test_load_engine

[enh] test: load each engine to check for syntax errors

commit6f9aa0e2581815189db06d3e7815f1e11b9a4f15 authorAdam Tauber <asciimoo@gmail.com> dateMon 31 Aug 2020, 14:29 (6 years ago) parent6ded6e74fb3ed2
3 files changed+23−12
searx/engines/__init__.py+6−7 searx/webapp.py+4−5 tests/unit/test_engines.py+13
searx/engines/__init__.py+6−7
@@ -72,11 +72,8 @@ def load_engine(engine_data):
7272
7373 engine_module = engine_data['engine']
7474
75− try:
76− engine = load_module(engine_module + '.py', engine_dir)
77− except:
78− logger.exception('Cannot load engine "{}"'.format(engine_module))
79− return None
75+ # can raise an exception
76+ engine = load_module(engine_module + '.py', engine_dir)
8077
8178 for param_name in engine_data:
8279 if param_name == 'engine':
@@ -254,9 +251,11 @@ def load_engines(engine_list):
254251 global engines
255252 engines.clear()
256253 for engine_data in engine_list:
257− engine = load_engine(engine_data)
258− if engine is not None:
254+ try:
255+ engine = load_engine(engine_data)
259256 engines[engine.name] = engine
257+ except:
258+ logger.exception('Cannot load engine "{}"'.format(engine_data['engine']))
260259 return engines
261260
262261
searx/webapp.py+4−5
@@ -136,11 +136,6 @@ app.jinja_env.lstrip_blocks = True
136136app.jinja_env.add_extension('jinja2.ext.loopcontrols')
137137app.secret_key = settings['server']['secret_key']
138138
139−if not searx_debug \
140− or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \
141− or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None:
142− initialize_engines(settings['engines'])
143−
144139babel = Babel(app)
145140
146141rtl_locales = ['ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'fa_IR', 'glk', 'he',
@@ -1051,6 +1046,10 @@ def page_not_found(e):
10511046
10521047
10531048def run():
1049+ if not searx_debug \
1050+ or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \
1051+ or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None:
1052+ initialize_engines(settings['engines'])
10541053 logger.debug('starting webserver on %s:%s', settings['server']['bind_address'], settings['server']['port'])
10551054 app.run(
10561055 debug=searx_debug,
tests/unit/test_engines.pynew file+13
@@ -0,0 +1,13 @@
1+# -*- coding: utf-8 -*-
2+
3+import unittest2 as unittest
4+from unittest2.util import strclass
5+from searx.engines import load_engine
6+from searx import settings
7+
8+
9+class TestEngine(unittest.TestCase):
10+
11+ def test_engines(self):
12+ for engine_data in settings['engines']:
13+ load_engine(engine_data)