diff --git a/fail2ban-testcases b/fail2ban-testcases index 91b2951d..41aca671 100755 --- a/fail2ban-testcases +++ b/fail2ban-testcases @@ -63,20 +63,19 @@ parser = get_opt_parser() (opts, files) = parser.parse_args() assert(not len(files)) -# Set the time to a fixed, known value -# Sun Aug 14 12:00:00 CEST 2005 - -# yoh: we need to adjust TZ to match the one used by Cyril so all the timestamps match -old_TZ = os.environ.get('TZ', None) -os.environ['TZ'] = 'Europe/Zurich' -time.tzset() -MyTime.setTime(1124013600) - -# Gets the instance of the logger. +# +# Logging +# logSys = logging.getLogger("fail2ban") -# Add the default logging handler -stdout = logging.StreamHandler(sys.stdout) -logSys.addHandler(stdout) + +# Numerical level of verbosity corresponding to a log "level" +verbosity = {'debug': 3, + 'info': 2, + 'warn': 1, + 'error': 1, + 'fatal': 0, + None: 1}[opts.log_level] + if opts.log_level is not None: # so we had explicit settings logSys.setLevel(getattr(logging, opts.log_level.upper())) @@ -86,9 +85,27 @@ else: # unless error occurs logSys.setLevel(getattr(logging, 'FATAL')) +# Add the default logging handler +stdout = logging.StreamHandler(sys.stdout) +# Custom log format for the verbose tests runs +if verbosity > 1: + stdout.setFormatter(logging.Formatter(' %(asctime)-15s %(thread)s %(message)s')) +else: + # just prefix with the space + stdout.setFormatter(logging.Formatter(' %(message)s')) +logSys.addHandler(stdout) + + +# +# Let know the version +# if not opts.log_level or opts.log_level != 'fatal': print "Fail2ban " + version + " test suite. Please wait..." + +# +# Gather the tests +# tests = unittest.TestSuite() # Server @@ -140,19 +157,31 @@ tests.addTest(unittest.makeSuite(filtertestcase.DNSUtilsTests)) # DateDetector tests.addTest(unittest.makeSuite(datedetectortestcase.DateDetectorTest)) -# Tests runner -testRunner = unittest.TextTestRunner( - verbosity={'debug': 3, - 'info': 2, - 'warn': 1, - 'error': 1, - 'fatal': 0, - None: 1}[opts.log_level]) -testRunner.run(tests) -# Just for the sake of it reset the TZ -# yoh is planing to move all this into setup/teardown methods within tests -os.environ.pop('TZ') -if old_TZ: - os.environ['TZ'] = old_TZ -time.tzset() + +# +# Run the tests +# +testRunner = unittest.TextTestRunner(verbosity=verbosity) + +try: + # Set the time to a fixed, known value + # Sun Aug 14 12:00:00 CEST 2005 + # yoh: we need to adjust TZ to match the one used by Cyril so all the timestamps match + old_TZ = os.environ.get('TZ', None) + os.environ['TZ'] = 'Europe/Zurich' + time.tzset() + MyTime.setTime(1124013600) + + tests_results = testRunner.run(tests) + +finally: + # Just for the sake of it reset the TZ + # yoh: move all this into setup/teardown methods within tests + os.environ.pop('TZ') + if old_TZ: + os.environ['TZ'] = old_TZ + time.tzset() + +if not tests_results.wasSuccessful(): + sys.exit(1)