| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | # -*- coding: utf-8 -*-"""Shared testing code."""from plone.testing import Layerfrom unittest2 import TestCaseimport osimport subprocessclass SearxTestLayer:    """Base layer for non-robot tests."""    __name__ = u'SearxTestLayer'    def setUp(cls):        pass    setUp = classmethod(setUp)    def tearDown(cls):        pass    tearDown = classmethod(tearDown)    def testSetUp(cls):        pass    testSetUp = classmethod(testSetUp)    def testTearDown(cls):        pass    testTearDown = classmethod(testTearDown)class SearxRobotLayer(Layer):    """Searx Robot Test Layer"""    def setUp(self):        os.setpgrp()  # create new process group, become its leader        # get program paths        webapp = os.path.join(            os.path.abspath(os.path.dirname(os.path.realpath(__file__))),            'webapp.py'        )        exe = os.path.abspath(os.path.dirname(__file__) + '/../bin/py')        # set robot settings path        os.environ['SEARX_SETTINGS_PATH'] = os.path.abspath(            os.path.dirname(__file__) + '/settings_robot.yml')        # run the server        self.server = subprocess.Popen(            [exe, webapp],            stdout=subprocess.PIPE,            stderr=subprocess.STDOUT        )    def tearDown(self):        # send TERM signal to all processes in my group, to stop subprocesses        os.killpg(os.getpgid(self.server.pid), 15)        # remove previously set environment variable        del os.environ['SEARX_SETTINGS_PATH']SEARXROBOTLAYER = SearxRobotLayer()class SearxTestCase(TestCase):    """Base test case for non-robot tests."""    layer = SearxTestLayer
 |