diff options
| author | Dalf <alex@al-f.net> | 2020-08-28 12:12:32 +0200 |
|---|---|---|
| committer | Dalf <alex@al-f.net> | 2020-08-28 12:12:32 +0200 |
| commit | 4fb3ed2c6335b68f6b28ebc68d5d22f2fd621648 (patch) | |
| tree | d21fa1ac26e0c3100f5ac02362f723aca0dd4223 | |
| parent | ec5adad851720be245a36018649011e7d0ec8e12 (diff) | |
[enh] test: load each engine to check for syntax errors
| -rw-r--r-- | searx/engines/__init__.py | 13 | ||||
| -rwxr-xr-x | searx/webapp.py | 9 | ||||
| -rw-r--r-- | tests/unit/test_engines.py | 13 |
3 files changed, 23 insertions, 12 deletions
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index 48c02e2e7..70b5ba166 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -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 diff --git a/searx/webapp.py b/searx/webapp.py index 4c0eceaaf..8a07d5ff1 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -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, diff --git a/tests/unit/test_engines.py b/tests/unit/test_engines.py new file mode 100644 index 000000000..3f5f8dc80 --- /dev/null +++ b/tests/unit/test_engines.py @@ -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) |