1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # SPDX-License-Identifier: AGPL-3.0-or-later
- # pylint: disable=missing-module-docstring,disable=missing-class-docstring,invalid-name
- import pathlib
- import os
- import aiounittest
- # Before import from the searx package, we need to set up the (debug)
- # environment. The import of the searx package initialize the searx.settings
- # and this in turn takes the defaults from the environment!
- os.environ.pop('SEARXNG_SETTINGS_PATH', None)
- os.environ['SEARXNG_DEBUG'] = '1'
- os.environ['SEARXNG_DEBUG_LOG_LEVEL'] = 'WARNING'
- os.environ['SEARXNG_DISABLE_ETC_SETTINGS'] = '1'
- class SearxTestLayer:
- """Base layer for non-robot tests."""
- __name__ = 'SearxTestLayer'
- @classmethod
- def setUp(cls):
- pass
- @classmethod
- def tearDown(cls):
- pass
- @classmethod
- def testSetUp(cls):
- pass
- @classmethod
- def testTearDown(cls):
- pass
- class SearxTestCase(aiounittest.AsyncTestCase):
- """Base test case for non-robot tests."""
- layer = SearxTestLayer
- SETTINGS_FOLDER = pathlib.Path(__file__).parent / "unit" / "settings"
- TEST_SETTINGS = "test_settings.yml"
- def setUp(self):
- self.init_test_settings()
- def setattr4test(self, obj, attr, value):
- """setattr(obj, attr, value) but reset to the previous value in the
- cleanup."""
- previous_value = getattr(obj, attr)
- def cleanup_patch():
- setattr(obj, attr, previous_value)
- self.addCleanup(cleanup_patch)
- setattr(obj, attr, value)
- def init_test_settings(self):
- """Sets ``SEARXNG_SETTINGS_PATH`` environment variable an initialize
- global ``settings`` variable and the ``logger`` from a test config in
- :origin:`tests/unit/settings/`.
- """
- os.environ['SEARXNG_SETTINGS_PATH'] = str(self.SETTINGS_FOLDER / self.TEST_SETTINGS)
- # pylint: disable=import-outside-toplevel
- import searx
- import searx.locales
- import searx.plugins
- import searx.search
- import searx.webapp
- # https://flask.palletsprojects.com/en/stable/config/#builtin-configuration-values
- # searx.webapp.app.config["DEBUG"] = True
- searx.webapp.app.config["TESTING"] = True # to get better error messages
- searx.webapp.app.config["EXPLAIN_TEMPLATE_LOADING"] = True
- searx.init_settings()
- searx.plugins.initialize(searx.webapp.app)
- # searx.search.initialize will:
- # - load the engines and
- # - initialize searx.network, searx.metrics, searx.processors and searx.search.checker
- searx.search.initialize(
- enable_checker=True,
- check_network=True,
- enable_metrics=searx.get_setting("general.enable_metrics"), # type: ignore
- )
- # pylint: disable=attribute-defined-outside-init
- self.app = searx.webapp.app
- self.client = searx.webapp.app.test_client()
|