searxng/searx/testing.py

89 lines
2 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
"""Shared testing code."""
from plone.testing import Layer
from unittest2 import TestCase
2016-01-02 11:15:47 +00:00
from os.path import dirname, join, abspath
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'
)
2016-01-02 11:15:47 +00:00
exe = 'python'
# set robot settings path
2016-01-02 11:15:47 +00:00
os.environ['SEARX_SETTINGS_PATH'] = abspath(
dirname(__file__) + '/settings_robot.yml')
# run the server
self.server = subprocess.Popen(
[exe, webapp],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT
)
def tearDown(self):
2016-02-27 17:41:09 +00:00
os.kill(self.server.pid, 9)
# 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
2016-01-02 11:15:47 +00:00
if __name__ == '__main__':
from tests.test_robot import test_suite
import sys
from zope.testrunner.runner import Runner
base_dir = abspath(join(dirname(__file__), '../tests'))
if sys.argv[1] == 'robot':
2016-02-27 17:41:09 +00:00
r = Runner(['--color',
'--auto-progress',
'--stop-on-error',
'--path',
base_dir],
2016-02-27 18:07:53 +00:00
found_suites=[test_suite()])
2016-02-27 17:41:09 +00:00
r.run()
sys.exit(int(r.failed))