Commit 98d4adc2 authored by Ivan Tyagov's avatar Ivan Tyagov

Add test node glue code.

parent 5d030d5e
# -*- coding: utf-8 -*-
import os
from test_suite import ERP5TypeTestSuite
from glob import glob
import os.path
import re
from itertools import chain
HERE = os.path.dirname(__file__)
BT5 = os.path.join(os.path.split(HERE)[0], 'bt5')
PRODUCT = os.path.join(os.path.split(HERE)[0], 'product')
class MESERP5(ERP5TypeTestSuite):
def getTestList(self):
component_re = re.compile(".*/([^/]+)/TestTemplateItem/portal_components"
"/test\.[^.]+\.([^.]+).py$")
return ['%s:%s' % (x.group(1), x.group(2)) \
for x in [component_re.match(y) for y in glob(os.path.join(
BT5, '*', '*', '*', 'test.erp5.test*.py'))]]
def run(self, full_test):
test = ':' in full_test and full_test.split(':')[1] or full_test
# from https://lab.nexedi.com/nexedi/erp5/commit/530e8b4e:
# ---- 8< ----
# Combining Zope and WCFS working together requires data to be on a real
# storage, not on in-RAM MappingStorage inside Zope's Python process.
# Force this via --load --save for now.
#
# Also manually indicate via --with_wendelin_core, that this test needs
# WCFS server - corresponding to ZODB test storage - to be launched.
#
# In the future we might want to rework custom_zodb.py to always use
# FileStorage on tmpfs instead of δ=MappingStorage in DemoStorage(..., δ),
# and to always spawn WCFS for all tests, so that this hack becomes
# unnecessary.
# ---- 8< ----
status_dict = self.runUnitTest('--load', '--save', '--with_wendelin_core', full_test)
if test.startswith('testFunctional'):
status_dict = self._updateFunctionalTestResponse(status_dict)
return status_dict
### this is dublicate code from erp5, needed to display functional tests ontestnodes nicely
def _updateFunctionalTestResponse(self, status_dict):
""" Convert the Unit Test output into more accurate information
related to funcional test run.
"""
# Parse relevant information to update response information
try:
summary, html_test_result = status_dict['stderr'].split("-"*79)[1:3]
except ValueError:
# In case of error when parse the file, preserve the original
# informations. This prevents we have unfinished tests.
return status_dict
status_dict['html_test_result'] = html_test_result
search = self.FTEST_PASS_FAIL_RE.search(summary)
if search:
group_dict = search.groupdict()
status_dict['failure_count'] = int(group_dict['failures'])
status_dict['test_count'] = int(group_dict['total'])
status_dict['skip_count'] = int(group_dict['expected_failure'])
return status_dict
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment