123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # -*- coding: utf-8 -*-
- """Shared testing code."""
- from plone.testing import Layer
- from unittest2 import TestCase
- import os
- import subprocess
- class 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
|