diff --git a/tester.py b/tester.py index e95558747d3f1e3b3a6704a3f20389aba7786779..53cf6e7259cc044c1181f497f3ae8844c803c489 100755 --- a/tester.py +++ b/tester.py @@ -250,7 +250,6 @@ class Tester(): # Prepare report report_rows.append((name, criticality, status, str(duration), description)) report_rows_length = [max(len(strip_colors(t)), report_rows_length[i]) for i, t in enumerate(report_rows[-1])] - exit_code = 1 if failures > 0 else 0 # Display results # results as text log('\nTests results:') @@ -296,7 +295,7 @@ class Tester(): with open(history_file, 'a') as fo: if add_header: fo.write('Date | Result | Succeeded | Failed | Not testable\n') - fo.write('%s | %s | %s | %s | %s\n' % (now.strftime('%Y-%m-%d %H:%M:%S'), 'OK' if exit_code == 0 else 'KO', successes, failures, len(tests) - successes - failures)) + fo.write('%s | %s | %s | %s | %s\n' % (now.strftime('%Y-%m-%d %H:%M:%S'), 'KO' if failures > 0 else 'OK', successes, failures, len(tests) - successes - failures)) # Search for old logs to remove names = os.listdir(log_dir) names.sort() @@ -325,7 +324,7 @@ class Tester(): if hostname: if email: send_email = True - elif email_if_fail and exit_code != 0: + elif email_if_fail and failures > 0: # if they were too many consecutive failures, do not send the email with open(history_file, 'r') as fo: history_content = fo.read() @@ -338,7 +337,10 @@ class Tester(): consecutive_failures += 1 else: break - if consecutive_failures < self.NO_MAIL_FAILURES_COUNT: + if consecutive_failures == self.NO_MAIL_FAILURES_COUNT: + log('Maximum consecutive tester failures reached (%s).\nNo more emails will be sent.' % consecutive_failures) + send_email = True + elif consecutive_failures < self.NO_MAIL_FAILURES_COUNT: log('Consecutive tester failures: %s.' % consecutive_failures) send_email = True else: @@ -382,7 +384,7 @@ Content-transfer-encoding: utf-8 boundary=boundary, hostname=hostname, recipients=recipients, - status='OK' if exit_code == 0 else 'KO', + status=('KO (%s tests failed)' % failures) if failures > 0 else 'OK', date=now.strftime('%Y-%m-%d %H:%M:%S'), report=html_report, log_name=log_name, @@ -397,6 +399,7 @@ Content-transfer-encoding: utf-8 return 1 else: log('Email sent to: %s' % recipients) + exit_code = 1 if failures > 0 else 0 return exit_code