| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | # SPDX-License-Identifier: AGPL-3.0-or-later# pylint: disable=missing-module-docstring,disable=missing-class-docstring,invalid-nameimport pathlibimport osimport 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):        passclass 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()
 |