def summary( self, returncode ): elapsed_time = time.time() - self.start_time Summary = '' if returncode: Summary += as_highlighted( 'summary', " === Process Terminated with status " + str(returncode) + " (Elapsed " + str(elapsed_time) + "s)" + " === ") + "\n" if self.errors: Summary += as_highlighted( 'error', " === Errors " + str(self.errors) + " === ") if self.warnings: Summary += as_highlighted( 'warning', " === Warnings " + str(self.warnings) + " === ") return Summary
def __call__(self, line): (matches, interpretor, error_id, warning_id) = self.interpret(line) if matches: highlights = interpretor['highlight'] display = interpretor['display'] meaning = interpretor['meaning'] file = interpretor['file'] message = '' for match in display: element = matches.group(match) if match == file and (meaning == 'error' or meaning == 'warning'): element = self.normalise_path(element) element = as_colour(meaning, element) if match in highlights: element = as_emphasised(element) message += element message = self.filtered_line(message + "\n", meaning) if meaning == 'error': if message: message = as_highlighted( meaning, " = Error " + str(error_id) + " = ") + "\n" + message else: self.errors -= 1 elif meaning == 'warning': if message: message = as_highlighted( meaning, " = Warning " + str(warning_id) + " = ") + "\n" + message else: self.warnings -= 1 return message return self.filtered_line(line)
def __call__( self, line ): ( matches, interpretor, error_id, warning_id ) = self.interpret( line ) if matches: highlights = interpretor['highlight'] display = interpretor['display'] meaning = interpretor['meaning'] file = interpretor['file'] message = '' for match in display: element = matches.group( match ) if match == file and ( meaning == 'error' or meaning == 'warning' ): element = self.normalise_path( element ) element = as_colour( meaning, element ) if match in highlights: element = as_emphasised( element ) message += element message = self.filtered_line( message + "\n", meaning ) if meaning == 'error': if message: message = as_highlighted( meaning, " = Error " + str(error_id) + " = ") + "\n" + message else: self.errors -= 1 elif meaning == 'warning': if message: message = as_highlighted( meaning, " = Warning " + str(warning_id) + " = ") + "\n" + message else: self.warnings -= 1 return message return self.filtered_line( line )
def stop(self, status='success', treat_error_as_warning=False): meaning = status if treat_error_as_warning and is_error(status): meaning = 'warning' if status == 'success': status = 'done' sys.stdout.write(as_highlighted(meaning, " = {} = ".format(status))) if self._timer: self._timer.stop() self._cpu_times = self._timer.elapsed() cuppa.timer.write_time(self._cpu_times, True) sys.stdout.write('\n\n')
def _write_test_case( self, test_case ): expected = test_case['expected'] == test_case['status'] passed = test_case['status'] == 'passed' meaning = test_case['status'] if not expected and passed: meaning = 'unexpected_success' label = " ".join( meaning.upper().split('_') ) cpu_times = test_case['cpu_times'] sys.stdout.write( as_highlighted( meaning, " = %s = " % label ) ) cuppa.timer.write_time( cpu_times )
def _write_test_case(self, test_case): expected = test_case['expected'] == test_case['status'] passed = test_case['status'] == 'passed' meaning = test_case['status'] if not expected and passed: meaning = 'unexpected_success' label = " ".join(meaning.upper().split('_')) cpu_times = test_case['cpu_times'] sys.stdout.write(as_highlighted(meaning, " = %s = " % label)) cuppa.timer.write_time(cpu_times)
def exit_test( self, test_case ): label = test_case['status'] meaning = test_case['status'] assertions = int(test_case['total']) passed = int(test_case['passed']) warned = int(test_case['warned']) failed = int(test_case['failed']) if meaning == 'passed' and warned: meaning = 'warning' sys.stdout.write( as_highlighted( meaning, " = %s = " % label ) ) self.__write_time( test_case ) if test_case['status'] == 'passed' and passed and not warned: sys.stdout.write( as_colour( meaning, " ( %s of %s Assertions Passed )" % ( passed, assertions ) ) ) elif test_case['status'] == 'passed' and warned: sys.stdout.write( as_colour( meaning, " ( %s Passed + %s Warned out of %s Assertions )" % ( passed, warned, assertions ) ) ) if failed > 0: sys.stdout.write( as_colour( meaning, " ( %s of %s Assertions Failed )" % ( failed, assertions ) ) ) if test_case['total'] == 0: sys.stdout.write( as_colour( 'notice'," ( No Assertions )" ) ) sys.stdout.write('\n')
def _write_test_case( self, test_case ): label = test_case['status'] meaning = test_case['status'] assertions = test_case['total'] passed = test_case['passed'] warned = test_case['warned'] failed = test_case['failed'] if meaning == 'passed' and warned: meaning = warned sys.stdout.write( as_highlighted( meaning, " = %s = " % label ) ) cuppa.timer.write_time( test_case['cpu_times'] ) if test_case['status'] == 'passed' and passed and not warned: sys.stdout.write( as_colour( meaning, " ( %s of %s Assertions Passed )" % ( passed, assertions ) ) ) elif test_case['status'] == 'passed' and warned: sys.stdout.write( as_colour( meaning, " ( %s Passed + %s Warned out of %s Assertions )" % ( passed, warned, assertions ) ) ) if failed > 0: sys.stdout.write( as_colour( meaning, " ( %s of %s Assertions Failed )" % ( failed, assertions ) ) ) if test_case['total'] == 0: sys.stdout.write( as_colour( 'notice'," ( No Assertions )" ) ) sys.stdout.write('\n')
def _write_test_case( self, test_case ): label = test_case['status'] meaning = test_case['status'] assertions = test_case['total'] passed = test_case['passed'] warned = test_case['warned'] failed = test_case['failed'] meaning = ( meaning == 'passed' and warned ) and 'warning' or 'passed' sys.stdout.write( as_highlighted( meaning, " = %s = " % label ) ) cuppa.timer.write_time( test_case['cpu_times'] ) if test_case['status'] == 'passed' and passed and not warned: sys.stdout.write( as_colour( meaning, " ( %s of %s Assertions Passed )" % ( passed, assertions ) ) ) elif test_case['status'] == 'passed' and warned: sys.stdout.write( as_colour( meaning, " ( %s Passed + %s Warned out of %s Assertions )" % ( passed, warned, assertions ) ) ) if failed > 0: sys.stdout.write( as_colour( meaning, " ( %s of %s Assertions Failed )" % ( failed, assertions ) ) ) if test_case['total'] == 0: sys.stdout.write( as_colour( 'notice'," ( No Assertions )" ) ) sys.stdout.write('\n')
def exit_test(self, test_case): label = test_case['status'] meaning = test_case['status'] assertions = int(test_case['total']) passed = int(test_case['passed']) warned = int(test_case['warned']) failed = int(test_case['failed']) if meaning == 'passed' and warned: meaning = 'warning' sys.stdout.write(as_highlighted(meaning, " = %s = " % label)) self.__write_time(test_case) if test_case['status'] == 'passed' and passed and not warned: sys.stdout.write( as_colour( meaning, " ( %s of %s Assertions Passed )" % (passed, assertions))) elif test_case['status'] == 'passed' and warned: sys.stdout.write( as_colour( meaning, " ( %s Passed + %s Warned out of %s Assertions )" % (passed, warned, assertions))) if failed > 0: sys.stdout.write( as_colour( meaning, " ( %s of %s Assertions Failed )" % (failed, assertions))) if test_case['total'] == 0: sys.stdout.write(as_colour('notice', " ( No Assertions )")) sys.stdout.write('\n')
def exit_suite(self, suite): sys.stdout.write( as_emphasised("\nTest Suite Finished [%s] " % suite['name'])) total_tests = int(suite['total_tests']) passed_tests = int(suite['passed_tests']) failed_tests = int(suite['failed_tests']) expected_failures = int(suite['expected_failures']) skipped_tests = int(suite['skipped_tests']) aborted_tests = int(suite['aborted_tests']) total_assertions = int(suite['total_assertions']) passed_assertions = int(suite['passed_assertions']) warned_assertions = int(suite['warned_assertions']) failed_assertions = int(suite['failed_assertions']) label = suite['status'].upper() meaning = suite['status'] if meaning == 'passed' and warned_assertions: meaning = 'warning' store_durations(suite) sys.stdout.write(as_highlighted(meaning, " = %s = " % label)) self.__write_time(suite) if total_assertions > 0: if suite['status'] == 'passed': if not warned_assertions: sys.stdout.write( as_highlighted( meaning, " ( %s of %s Assertions Passed )" % (passed_assertions, total_assertions))) else: sys.stdout.write( as_highlighted( meaning, " ( %s Passed + %s Warned out of %s Assertions Passed )" % (passed_assertions, warned_assertions, total_assertions))) else: sys.stdout.write( as_highlighted( meaning, " ( %s of %s Assertions Failed )" % (failed_assertions, total_assertions))) else: sys.stdout.write(as_colour('notice', " ( No Assertions Checked )")) if suite['status'] == 'passed' and passed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Passed ) " % (passed_tests, passed_tests > 1 and 'Test Cases' or 'Test Case'))) elif suite['status'] != 'passed': self.master_suite['status'] = 'failed' if failed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Failed ) " % (failed_tests, failed_tests > 1 and 'Test Cases' or 'Test Case'))) if expected_failures > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Expected ) " % (expected_failures, expected_failures > 1 and 'Failures' or 'Failure'))) if skipped_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Skipped ) " % (skipped_tests, skipped_tests > 1 and 'Test Cases' or 'Test Case'))) if aborted_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Aborted ) " % (aborted_tests, aborted_tests > 1 and 'Test Cases Were' or 'Test Case Was'))) sys.stdout.write('\n\n')
def exit_suite(self): suite = self._suite total_tests = suite['total_tests'] passed_tests = suite['passed_tests'] + suite[ 'expected_failures'] + suite['skipped_tests'] failed_tests = suite['failed_tests'] + suite['aborted_tests'] expected_failures = suite['expected_failures'] skipped_tests = suite['skipped_tests'] aborted_tests = suite['aborted_tests'] suite['status'] = 'passed' meaning = 'passed' if total_tests != passed_tests: suite['status'] = 'failed' meaning = 'failed' sys.stdout.write(as_emphasised("\nTest Suite [{}] ".format( self._name))) sys.stdout.write( as_highlighted(meaning, " = {} = ".format(suite['status'].upper()))) sys.stdout.write('\n') sys.stdout.write(as_emphasised("\nSummary\n")) for test in self._tests: sys.stdout.write( as_emphasised("\nTest case [{}]".format(test['name'])) + '\n') self._write_test_case(test) sys.stdout.write('\n\n') if total_tests > 0: if suite['status'] == 'passed': sys.stdout.write( as_highlighted( meaning, " ( %s of %s Test Cases Passed )" % (passed_tests, total_tests))) else: sys.stdout.write( as_highlighted( meaning, " ( %s of %s Test Cases Failed )" % (failed_tests, total_tests))) else: sys.stdout.write(as_colour('notice', " ( No Test Cases Checked )")) if passed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Passed ) " % (passed_tests, passed_tests > 1 and 'Test Cases' or 'Test Case'))) if failed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Failed ) " % (failed_tests, failed_tests > 1 and 'Test Cases' or 'Test Case'))) if expected_failures > 0: meaning = 'expected_failure' sys.stdout.write( as_highlighted( meaning, " ( %s %s Expected ) " % (expected_failures, expected_failures > 1 and 'Failures' or 'Failure'))) if skipped_tests > 0: meaning = 'skipped' sys.stdout.write( as_highlighted( meaning, " ( %s %s Skipped ) " % (skipped_tests, skipped_tests > 1 and 'Test Cases' or 'Test Case'))) if aborted_tests > 0: meaning = 'aborted' sys.stdout.write( as_highlighted( meaning, " ( %s %s Aborted ) " % (aborted_tests, aborted_tests > 1 and 'Test Cases Were' or 'Test Case Was'))) sys.stdout.write('\n') cuppa.timer.write_time(self._suite['total_cpu_times'], True) self._tests = [] self._suite = {} sys.stdout.write('\n\n')
def exit_suite(self, suite): sys.stdout.write( as_emphasised( "\nTest Suite Finished [%s] " % suite['name'] ) ) passed_tests = suite['passed_tests'] failed_tests = suite['failed_tests'] expected_failures = suite['expected_failures'] skipped_tests = suite['skipped_tests'] aborted_tests = suite['aborted_tests'] total_assertions = suite['total_assertions'] passed_assertions = suite['passed_assertions'] warned_assertions = suite['warned_assertions'] failed_assertions = suite['failed_assertions'] label = suite['status'].upper() meaning = suite['status'] if meaning == 'passed' and warned_assertions: meaning = 'warning' sys.stdout.write( as_highlighted( meaning, " = {} = ".format( suite['status'].upper() ) ) ) sys.stdout.write('\n') sys.stdout.write( as_emphasised( "\nSummary\n" ) ) for test in suite['tests']: sys.stdout.write( as_emphasised( "\nTest case [{}]".format( test['name'] ) ) + '\n' ) self._write_test_case( test ) sys.stdout.write('\n') sys.stdout.write( as_highlighted( meaning, " = %s = " % label ) ) cuppa.timer.write_time( suite['total_cpu_times'] ) if total_assertions > 0: if suite['status'] == 'passed': if not warned_assertions: sys.stdout.write( as_highlighted( meaning, " ( %s of %s Assertions Passed )" % (passed_assertions, total_assertions) ) ) else: sys.stdout.write( as_highlighted( meaning, " ( %s Passed + %s Warned out of %s Assertions Passed )" % (passed_assertions, warned_assertions, total_assertions) ) ) else: sys.stdout.write( as_highlighted( meaning, " ( %s of %s Assertions Failed )" % (failed_assertions, total_assertions) ) ) else: sys.stdout.write( as_colour( 'notice', " ( No Assertions Checked )" ) ) if suite['status'] == 'passed' and passed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Passed ) " % (passed_tests, passed_tests > 1 and 'Test Cases' or 'Test Case') ) ) elif suite['status'] != 'passed': self.master_suite['status'] = 'failed' if failed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Failed ) " % (failed_tests, failed_tests > 1 and 'Test Cases' or 'Test Case') ) ) if expected_failures > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Expected ) " % (expected_failures, expected_failures > 1 and 'Failures' or 'Failure') ) ) if len( skipped_tests ): number = len( skipped_tests ) sys.stdout.write( as_highlighted( meaning, " ( %s %s Skipped ) " % (number, number > 1 and 'Test Cases' or 'Test Case') ) ) if aborted_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Aborted ) " % (aborted_tests, aborted_tests > 1 and 'Test Cases Were' or 'Test Case Was') ) ) sys.stdout.write( '\n\n')
def exit_suite( self ): suite = self._suite total_tests = suite['total_tests'] passed_tests = suite['passed_tests'] + suite['expected_failures'] + suite['skipped_tests'] failed_tests = suite['failed_tests'] + suite['aborted_tests'] expected_failures = suite['expected_failures'] skipped_tests = suite['skipped_tests'] aborted_tests = suite['aborted_tests'] suite['status'] = 'passed' meaning = 'passed' if total_tests != passed_tests: suite['status'] = 'failed' meaning = 'failed' sys.stdout.write( as_emphasised( "\nTest Suite [{}] ".format( self._name ) ) ) sys.stdout.write( as_highlighted( meaning, " = {} = ".format( suite['status'].upper() ) ) ) sys.stdout.write('\n') sys.stdout.write( as_emphasised( "\nSummary\n" ) ) for test in self._tests: sys.stdout.write( as_emphasised( "\nTest case [{}]".format( test['name'] ) ) + '\n' ) self._write_test_case( test ) sys.stdout.write('\n\n') if total_tests > 0: if suite['status'] == 'passed': sys.stdout.write( as_highlighted( meaning, " ( %s of %s Test Cases Passed )" % ( passed_tests, total_tests ) ) ) else: sys.stdout.write( as_highlighted( meaning, " ( %s of %s Test Cases Failed )" % (failed_tests, total_tests) ) ) else: sys.stdout.write( as_colour( 'notice', " ( No Test Cases Checked )" ) ) if passed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Passed ) " % (passed_tests, passed_tests > 1 and 'Test Cases' or 'Test Case') ) ) if failed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Failed ) " % (failed_tests, failed_tests > 1 and 'Test Cases' or 'Test Case') ) ) if expected_failures > 0: meaning = 'expected_failure' sys.stdout.write( as_highlighted( meaning, " ( %s %s Expected ) " % (expected_failures, expected_failures > 1 and 'Failures' or 'Failure') ) ) if skipped_tests > 0: meaning = 'skipped' sys.stdout.write( as_highlighted( meaning, " ( %s %s Skipped ) " % (skipped_tests, skipped_tests > 1 and 'Test Cases' or 'Test Case') ) ) if aborted_tests > 0: meaning = 'aborted' sys.stdout.write( as_highlighted( meaning, " ( %s %s Aborted ) " % (aborted_tests, aborted_tests > 1 and 'Test Cases Were' or 'Test Case Was') ) ) sys.stdout.write('\n') cuppa.timer.write_time( self._suite['total_cpu_times'], True ) self._tests = [] self._suite = {} sys.stdout.write('\n\n')
def exit_suite(self, suite): sys.stdout.write( as_emphasised( "\nTest Suite Finished [%s] " % suite['name'] ) ) label = suite['status'].upper() meaning = suite['status'] store_durations( suite ) sys.stdout.write( as_highlighted( meaning, " = %s = " % label ) ) self.__write_time( suite ) total_tests = int(suite['total_tests']) passed_tests = int(suite['passed_tests']) failed_tests = int(suite['failed_tests']) expected_failures = int(suite['expected_failures']) skipped_tests = int(suite['skipped_tests']) aborted_tests = int(suite['aborted_tests']) total_assertions = int(suite['total_assertions']) passed_assertions = int(suite['passed_assertions']) failed_assertions = int(suite['failed_assertions']) if total_assertions > 0: if suite['status'] == 'passed': sys.stdout.write( as_highlighted( meaning, " ( %s of %s Assertions Passed )" % (passed_assertions, total_assertions) ) ) else: sys.stdout.write( as_highlighted( meaning, " ( %s of %s Assertions Failed )" % (failed_assertions, total_assertions) ) ) else: sys.stdout.write( as_colour( 'notice', " ( No Assertions Checked )" ) ) if suite['status'] == 'passed' and passed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Passed ) " % (passed_tests, passed_tests > 1 and 'Test Cases' or 'Test Case') ) ) elif suite['status'] != 'passed': self.master_suite['status'] = 'failed' if failed_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Failed ) " % (failed_tests, failed_tests > 1 and 'Test Cases' or 'Test Case') ) ) if expected_failures > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Expected ) " % (expected_failures, expected_failures > 1 and 'Failures' or 'Failure') ) ) if skipped_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Skipped ) " % (skipped_tests, skipped_tests > 1 and 'Test Cases' or 'Test Case') ) ) if aborted_tests > 0: sys.stdout.write( as_highlighted( meaning, " ( %s %s Aborted ) " % (aborted_tests, aborted_tests > 1 and 'Test Cases Were' or 'Test Case Was') ) ) sys.stdout.write('\n\n')