From d80fcbc635c683c43c23dc2f297b543ef6c11d55 Mon Sep 17 00:00:00 2001
From: Markus Heiser <markus.heiser@darmarit.de>
Date: Tue, 25 Jun 2024 10:49:37 +0200
Subject: [PATCH] [fix] unit test_xpath.py: name 'logger' is not defined

Depending on the order in which the unit tests are executed, the python modules
of the engines are initialized (monkey patched) or not. As the order of the
tests is not static, random errors may occur.

To avaoid random `NameError: name 'logger' is not defined` in the unit tests of
the xpath engine, a logger is monkey patched into the xpath py-module.

```
make test.unit
TEST      tests/unit
......EE...................
======================================================================
ERROR: test_response (tests.unit.engines.test_xpath.TestXpathEngine.test_response)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./tests/unit/engines/test_xpath.py", line 60, in test_response
    self.assertEqual(xpath.response(response), [])
                     ^^^^^^^^^^^^^^^^^^^^^^^^
  File "./searx/engines/xpath.py", line 309, in response
    logger.debug("found %s results", len(results))
    ^^^^^^
NameError: name 'logger' is not defined

======================================================================
ERROR: test_response_results_xpath (tests.unit.engines.test_xpath.TestXpathEngine.test_response_results_xpath)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./tests/unit/engines/test_xpath.py", line 102, in test_response_results_xpath
    self.assertEqual(xpath.response(response), [])
                     ^^^^^^^^^^^^^^^^^^^^^^^^
  File "./searx/engines/xpath.py", line 309, in response
    logger.debug("found %s results", len(results))
    ^^^^^^
NameError: name 'logger' is not defined
```

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
---
 tests/unit/engines/test_xpath.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/tests/unit/engines/test_xpath.py b/tests/unit/engines/test_xpath.py
index 380dd1d6c..e80ef96e2 100644
--- a/tests/unit/engines/test_xpath.py
+++ b/tests/unit/engines/test_xpath.py
@@ -3,9 +3,14 @@
 
 from collections import defaultdict
 import mock
+
 from searx.engines import xpath
+from searx import logger
+
 from tests import SearxTestCase
 
+logger = logger.getChild('engines')
+
 
 class TestXpathEngine(SearxTestCase):  # pylint: disable=missing-class-docstring
     html = """
@@ -23,6 +28,9 @@ class TestXpathEngine(SearxTestCase):  # pylint: disable=missing-class-docstring
     </div>
     """
 
+    def setUp(self):
+        xpath.logger = logger.getChild('test_xpath')
+
     def test_request(self):
         xpath.search_url = 'https://url.com/{query}'
         xpath.categories = []