| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | 
"""Shared testing code."""import sysimport osimport subprocessimport tracebackimport pathlibfrom splinter import Browserimport tests as searx_testsfrom tests.robot import test_webappclass SearxRobotLayer:    """Searx Robot Test Layer"""    def setUp(self):        os.setpgrp()          tests_path = pathlib.Path(searx_tests.__file__).resolve().parent                webapp = str(tests_path.parent / 'searx' / 'webapp.py')        exe = 'python'                                                        os.environ['SEARXNG_DEBUG'] = '0'                os.environ['SEARXNG_SETTINGS_PATH'] = str(tests_path / 'robot' / 'settings_robot.yml')                self.server = subprocess.Popen(              [exe, webapp], stdout=subprocess.PIPE, stderr=subprocess.STDOUT        )        if hasattr(self.server.stdout, 'read1'):            print(self.server.stdout.read1(1024).decode())    def tearDown(self):        os.kill(self.server.pid, 9)                del os.environ['SEARXNG_SETTINGS_PATH']def run_robot_tests(tests):    print('Running {0} tests'.format(len(tests)))    for test in tests:        with Browser('firefox', headless=True, profile_preferences={'intl.accept_languages': 'en'}) as browser:            test(browser)def main():    test_layer = SearxRobotLayer()    try:        test_layer.setUp()        run_robot_tests([getattr(test_webapp, x) for x in dir(test_webapp) if x.startswith('test_')])    except Exception:          print('Error occured: {0}'.format(traceback.format_exc()))        sys.exit(1)    finally:        test_layer.tearDown()if __name__ == '__main__':    main()
 |