From 0330a7b69e1f5987901eb9da23cb6ec77c82da06 Mon Sep 17 00:00:00 2001 From: Gabriel Monnerat <gabriel@tiolive.com> Date: Wed, 9 May 2012 22:33:37 -0300 Subject: [PATCH] refactor code to support expected failures --- .../tests/ERP5TypeFunctionalTestCase.py | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py b/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py index 54d18973a1..4fea2a2e80 100755 --- a/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py +++ b/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py @@ -47,6 +47,7 @@ TEST_RESULT_RE = re.compile('<div style="padding-top: 10px;">\s*<p>\s*' '<img.*?</div>\s.*?</div>\s*', re.S) TEST_ERROR_RESULT_RE = re.compile('.*(?:error.gif|title status_failed).*', re.S) +EXPECTED_FAILURE_RE = re.compile('.*expected failure.*', re.I) ZELENIUM_BASE_URL = "%s/portal_tests/%s/core/TestRunner.html?test=../test_suite_html&auto=on&resultsUrl=../postResults&__ac_name=%s&__ac_password=%s" @@ -302,14 +303,20 @@ class FunctionalTestRunner: def processResult(self): file_content = self.getStatus().encode("utf-8", "replace") - sucess_amount = TEST_PASS_RE.search(file_content).group(1) - failure_amount = TEST_FAILURE_RE.search(file_content).group(1) + sucess_amount = int(TEST_PASS_RE.search(file_content).group(1)) + failure_amount = int(TEST_FAILURE_RE.search(file_content).group(1)) error_title_list = [re.compile('\s+').sub(' ', x).strip() for x in TEST_ERROR_TITLE_RE.findall(file_content)] + is_expected_failure = lambda x: EXPECTED_FAILURE_RE.match(x) + expected_failure_amount = len(filter(is_expected_failure, error_title_list)) + # Remove expected failures from list + error_title_list = filter(lambda x: not is_expected_failure(x), error_title_list) + failure_amount -= expected_failure_amount + detail = '' for test_result in TEST_RESULT_RE.findall(file_content): - if TEST_ERROR_RESULT_RE.match(test_result): + if TEST_ERROR_RESULT_RE.match(test_result): detail += test_result detail = IMAGE_RE.sub('', detail) @@ -323,7 +330,8 @@ class FunctionalTestRunner: </html>''' % detail # When return fix output for handle unicode issues. - return detail, int(sucess_amount), int(failure_amount), error_title_list + return detail, sucess_amount, failure_amount, expected_failure_amount, \ + error_title_list class ERP5TypeFunctionalTestCase(ERP5TypeTestCase): run_only = "" @@ -382,7 +390,8 @@ class ERP5TypeFunctionalTestCase(ERP5TypeTestCase): debug = self.foreground or os.environ.get("erp5_debug_mode") self.runner.test(debug=debug) try: - detail, success, failure, error_title_list = self.runner.processResult() + detail, success, failure, \ + expected_failure, error_title_list = self.runner.processResult() except TimeoutError, e: self._verboseErrorLog(20) raise TimeoutError(e) @@ -394,8 +403,13 @@ class ERP5TypeFunctionalTestCase(ERP5TypeTestCase): self.logMessage("-" * 79) total = success + failure - self.logMessage("%s Functional Tests %s Tests, %s Failures" % \ - (self.getTitle(), total, failure)) + message_args = {"title": self.getTitle(), + "total": total, + "failure": failure, + "expected": expected_failure} + message = "%(title)s Functional Tests %(total)s Tests, %(failure)s " + \ + "Failures, %(expected)s Expected failures" + self.logMessage(message % message_args) self.logMessage("-" * 79) self.logMessage(detail) self.logMessage("-" * 79) -- 2.30.9