Merge pull request #2160 from dalf/test_load_engine

[enh] test: load each engine to check for syntax errors
This commit is contained in:
Adam Tauber 2020-08-31 14:29:52 +02:00 committed by GitHub
commit 6f9aa0e258
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 12 deletions

View file

@ -72,11 +72,8 @@ def load_engine(engine_data):
engine_module = engine_data['engine']
try:
engine = load_module(engine_module + '.py', engine_dir)
except:
logger.exception('Cannot load engine "{}"'.format(engine_module))
return None
# can raise an exception
engine = load_module(engine_module + '.py', engine_dir)
for param_name in engine_data:
if param_name == 'engine':
@ -254,9 +251,11 @@ def load_engines(engine_list):
global engines
engines.clear()
for engine_data in engine_list:
engine = load_engine(engine_data)
if engine is not None:
try:
engine = load_engine(engine_data)
engines[engine.name] = engine
except:
logger.exception('Cannot load engine "{}"'.format(engine_data['engine']))
return engines

View file

@ -136,11 +136,6 @@ app.jinja_env.lstrip_blocks = True
app.jinja_env.add_extension('jinja2.ext.loopcontrols')
app.secret_key = settings['server']['secret_key']
if not searx_debug \
or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \
or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None:
initialize_engines(settings['engines'])
babel = Babel(app)
rtl_locales = ['ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'fa_IR', 'glk', 'he',
@ -1051,6 +1046,10 @@ def page_not_found(e):
def run():
if not searx_debug \
or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \
or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None:
initialize_engines(settings['engines'])
logger.debug('starting webserver on %s:%s', settings['server']['bind_address'], settings['server']['port'])
app.run(
debug=searx_debug,

View file

@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
import unittest2 as unittest
from unittest2.util import strclass
from searx.engines import load_engine
from searx import settings
class TestEngine(unittest.TestCase):
def test_engines(self):
for engine_data in settings['engines']:
load_engine(engine_data)