def cleanup(self): # Print the results table again if a bunch of output was spewed to the screen between # tests as they were running if (self.options.verbose or (self.num_failed != 0 and not self.options.quiet)) and not self.options.dry_run: print('\n\nFinal Test Results:\n' + ('-' * (util.TERM_COLS-1))) for (tester_data, result, timing) in sorted(self.test_table, key=lambda x: x[1], reverse=True): print(util.formatResult(tester_data, result, self.options)) time = clock() - self.start_time print('-' * (util.TERM_COLS-1)) # Mask off TestHarness error codes to report parser errors fatal_error = '' if self.error_code & Parser.getErrorCodeMask(): fatal_error += ', <r>FATAL PARSER ERROR</r>' if self.error_code & ~Parser.getErrorCodeMask(): fatal_error += ', <r>FATAL TEST HARNESS ERROR</r>' # Alert the user to their session file if self.options.queueing: print 'Your session file is %s' % self.options.session_file # Print a different footer when performing a dry run if self.options.dry_run: print('Processed %d tests in %.1f seconds' % (self.num_passed+self.num_skipped, time)) summary = '<b>%d would run</b>' summary += ', <b>%d would be skipped</b>' summary += fatal_error print(util.colorText( summary % (self.num_passed, self.num_skipped), "", html = True, \ colored=self.options.colored, code=self.options.code )) else: print('Ran %d tests in %.1f seconds' % (self.num_passed+self.num_failed, time)) if self.num_passed: summary = '<g>%d passed</g>' else: summary = '<b>%d passed</b>' summary += ', <b>%d skipped</b>' if self.num_pending: summary += ', <c>%d pending</c>' else: summary += ', <b>%d pending</b>' if self.num_failed: summary += ', <r>%d FAILED</r>' else: summary += ', <b>%d failed</b>' summary += fatal_error print(util.colorText( summary % (self.num_passed, self.num_skipped, self.num_pending, self.num_failed), "", html = True, \ colored=self.options.colored, code=self.options.code )) if self.file: self.file.close() # Close the failed_tests file if self.writeFailedTest != None: self.writeFailedTest.close()
def cleanup(self): # Print the results table again if a bunch of output was spewed to the screen between # tests as they were running if (self.options.verbose or (self.num_failed != 0 and not self.options.quiet)) and not self.options.dry_run: print('\n\nFinal Test Results:\n' + ('-' * (util.TERM_COLS - 1))) for (tester_data, result, timing) in sorted(self.test_table, key=lambda x: x[1], reverse=True): print(util.formatResult(tester_data, result, self.options)) time = clock() - self.start_time print('-' * (util.TERM_COLS - 1)) # Mask off TestHarness error codes to report parser errors fatal_error = '' if self.error_code & Parser.getErrorCodeMask(): fatal_error += ', <r>FATAL PARSER ERROR</r>' if self.error_code & ~Parser.getErrorCodeMask(): fatal_error += ', <r>FATAL TEST HARNESS ERROR</r>' # Print a different footer when performing a dry run if self.options.dry_run: print('Processed %d tests in %.1f seconds' % (self.num_passed + self.num_skipped, time)) summary = '<b>%d would run</b>' summary += ', <b>%d would be skipped</b>' summary += fatal_error print(util.colorText( summary % (self.num_passed, self.num_skipped), "", html = True, \ colored=self.options.colored, code=self.options.code )) else: print('Ran %d tests in %.1f seconds' % (self.num_passed + self.num_failed, time)) if self.num_passed: summary = '<g>%d passed</g>' else: summary = '<b>%d passed</b>' summary += ', <b>%d skipped</b>' if self.num_failed: summary += ', <r>%d FAILED</r>' else: summary += ', <b>%d failed</b>' summary += fatal_error print(util.colorText( summary % (self.num_passed, self.num_skipped, self.num_failed), "", html = True, \ colored=self.options.colored, code=self.options.code )) if self.file: self.file.close() # Close the failed_tests file if self.writeFailedTest != None: self.writeFailedTest.close()
def printResult(self, tester_data): """ Method to print a testers status to the screen """ tester = tester_data.getTester() # The test has no status to print if tester.isSilent() or (tester.isDeleted() and not self.options.extra_info): caveat_formatted_results = None # Print what ever status the tester has at the time else: if self.options.verbose or (tester.didFail() and not self.options.quiet): output = 'Working Directory: ' + tester.getTestDir() + '\nRunning command: ' + tester.getCommand(self.options) + '\n' output += tester_data.getOutput() output = output.replace('\r', '\n') # replace the carriage returns with newlines lines = output.split('\n') # Obtain color based on test status color = tester.getColor() if output != '': test_name = util.colorText(tester.getTestName() + ": ", color, colored=self.options.colored, code=self.options.code) output = test_name + ("\n" + test_name).join(lines) print(output) caveat_formatted_results = self.formatCaveats(tester) print(util.formatResult(tester_data, caveat_formatted_results, self.options)) return caveat_formatted_results
def printResult(self, tester_data): """ Method to print a testers status to the screen """ tester = tester_data.getTester() caveat_formatted_results = None # Print what ever status the tester has at the time if self.canPrint(tester): if self.options.verbose or (tester.didFail() and not self.options.quiet): output = 'Working Directory: ' + tester.getTestDir( ) + '\nRunning command: ' + tester.getCommand( self.options) + '\n' output += tester_data.getOutput() output = output.replace( '\r', '\n') # replace the carriage returns with newlines lines = output.split('\n') # Obtain color based on test status color = tester.getColor() if output != '': test_name = util.colorText(tester.getTestName() + ": ", color, colored=self.options.colored, code=self.options.code) output = test_name + ("\n" + test_name).join(lines) print(output) caveat_formatted_results = self.formatCaveats(tester) print( util.formatResult(tester_data, caveat_formatted_results, self.options)) return caveat_formatted_results
def printOutput(self, job, color): """ Method to print a testers output to the screen """ output = '' # Print what ever status the tester has at the time if self.options.verbose or (job.isFail() and not self.options.quiet): output = 'Working Directory: ' + job.getTestDir() + '\nRunning command: ' + job.getCommand() + '\n' output += util.trimOutput(job, self.options) output = output.replace('\r', '\n') # replace the carriage returns with newlines lines = output.split('\n') if output != '': test_name = util.colorText(job.getTestName() + ": ", color, colored=self.options.colored, code=self.options.code) output = test_name + ("\n" + test_name).join(lines) print(output) return output
def printOutput(self, job): """ Method to print a testers output to the screen """ tester = job.getTester() output = '' # Print what ever status the tester has at the time if self.options.verbose or (tester.isFail() and not self.options.quiet): output = 'Working Directory: ' + tester.getTestDir() + '\nRunning command: ' + tester.getCommand(self.options) + '\n' output += job.getOutput() output = output.replace('\r', '\n') # replace the carriage returns with newlines lines = output.split('\n') # Obtain color based on test status color = tester.getColor() if output != '': test_name = util.colorText(tester.getTestName() + ": ", color, colored=self.options.colored, code=self.options.code) output = test_name + ("\n" + test_name).join(lines) print(output) return output
def cleanup(self): # Not interesting in printing any final results if we are cleaning up old queue manager runs if self.options.queue_cleanup: try: os.remove(self.results_storage) except OSError: pass return # Print the results table again if a bunch of output was spewed to the screen between # tests as they were running if len(self.parse_errors) > 0: print('\n\nParser Errors:\n' + ('-' * (util.TERM_COLS))) for err in self.parse_errors: print(util.colorText(err, 'RED', html=True, colored=self.options.colored, code=self.options.code)) if (self.options.verbose or (self.num_failed != 0 and not self.options.quiet)) and not self.options.dry_run: print('\n\nFinal Test Results:\n' + ('-' * (util.TERM_COLS))) for (job, result, timing) in sorted(self.test_table, key=lambda x: x[1], reverse=True): print(util.formatResult(job, self.options, caveats=True)) time = clock() - self.start_time print('-' * (util.TERM_COLS)) # Mask off TestHarness error codes to report parser errors fatal_error = '' if self.error_code: fatal_error += ', <r>FATAL TEST HARNESS ERROR</r>' if len(self.parse_errors) > 0: fatal_error += ', <r>FATAL PARSER ERROR</r>' self.error_code = 1 # Alert the user to their session file if self.options.queueing: print('Your session file is %s' % self.results_storage) # Print a different footer when performing a dry run if self.options.dry_run: print('Processed %d tests in %.1f seconds.' % (self.num_passed+self.num_skipped, time)) summary = '<b>%d would run</b>' summary += ', <b>%d would be skipped</b>' summary += fatal_error print(util.colorText( summary % (self.num_passed, self.num_skipped), "", html = True, \ colored=self.options.colored, code=self.options.code )) else: print('Ran %d tests in %.1f seconds.' % (self.num_passed+self.num_failed, time)) if self.num_passed: summary = '<g>%d passed</g>' else: summary = '<b>%d passed</b>' summary += ', <b>%d skipped</b>' if self.num_pending: summary += ', <c>%d pending</c>' else: summary += ', <b>%d pending</b>' if self.num_failed: summary += ', <r>%d FAILED</r>' else: summary += ', <b>%d failed</b>' if self.scheduler.maxFailures(): summary += '\n<r>MAX FAILURES REACHED</r>' summary += fatal_error print(util.colorText( summary % (self.num_passed, self.num_skipped, self.num_pending, self.num_failed), "", html = True, \ colored=self.options.colored, code=self.options.code )) # Perform any write-to-disc operations self.writeResults()