From af126eb308712bfb95829d618800be52ea73a57d Mon Sep 17 00:00:00 2001 From: sebres Date: Thu, 18 Aug 2016 14:40:53 +0200 Subject: [PATCH] simplify fail2ban-testcases: move some code pieces inclusive option parser from fail2ban-testcases to tests/utils.py (+ coverage) --- bin/fail2ban-testcases | 58 +++-------------------------------------- fail2ban/tests/utils.py | 51 +++++++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 55 deletions(-) diff --git a/bin/fail2ban-testcases b/bin/fail2ban-testcases index d8c40727..5539d4c6 100755 --- a/bin/fail2ban-testcases +++ b/bin/fail2ban-testcases @@ -37,11 +37,9 @@ if os.path.exists("fail2ban/__init__.py"): sys.path.insert(0, ".") from fail2ban.version import version -from fail2ban.tests.utils import initProcess, gatherTests +from fail2ban.tests.utils import getOptParser, initProcess, gatherTests from fail2ban.setup import updatePyExec -from optparse import OptionParser, Option - # Update fail2ban-python env to current python version (where f2b-modules located/installed) bindir = os.path.dirname( # __file__ seems to be overwritten sometimes on some python versions (e.g. bug of 2.6 by running under cProfile, etc.): @@ -49,52 +47,7 @@ bindir = os.path.dirname( ) updatePyExec(bindir) -def get_opt_parser(): - # use module docstring for help output - p = OptionParser( - usage="%s [OPTIONS] [regexps]\n" % sys.argv[0] + __doc__, - version="%prog " + version) - - p.add_options([ - Option('-l', "--log-level", type="choice", - dest="log_level", - choices=('heavydebug', 'debug', 'info', 'notice', 'warning', 'error', 'critical'), - default=None, - help="Log level for the logger to use during running tests"), - Option('-v', "--verbosity", action="store", - dest="verbosity", type=int, - default=None, - help="Set numerical level of verbosity (0..4)"), - Option("--log-direct", action="store_false", - dest="log_lazy", - default=True, - help="Prevent lazy logging inside tests"), - Option('-n', "--no-network", action="store_true", - dest="no_network", - help="Do not run tests that require the network"), - Option('-g', "--no-gamin", action="store_true", - dest="no_gamin", - help="Do not run tests that require the gamin"), - Option('-m', "--memory-db", action="store_true", - dest="memory_db", - help="Run database tests using memory instead of file"), - Option('-f', "--fast", action="store_true", - dest="fast", - help="Try to increase speed of the tests, decreasing of wait intervals, memory database"), - Option('-i', "--ignore", action="store_true", - dest="negate_re", - help="negate [regexps] filter to ignore tests matched specified regexps"), - Option("-t", "--log-traceback", action='store_true', - help="Enrich log-messages with compressed tracebacks"), - Option("--full-traceback", action='store_true', - help="Either to make the tracebacks full, not compressed (as by default)"), - - ]) - - return p - -parser = get_opt_parser() -(opts, regexps) = parser.parse_args() +(opts, regexps) = getOptParser(__doc__).parse_args() # # Process initialization corresponding options (logging, default options, etc.) @@ -103,13 +56,10 @@ opts = initProcess(opts) verbosity = opts.verbosity # -# Let know the version +# Gather tests (and filter corresponding options) # -if opts.verbosity != 0: # pragma: no cover - print("Fail2ban %s test suite. Python %s. Please wait..." \ - % (version, str(sys.version).replace('\n', ''))) - tests = gatherTests(regexps, opts) + # # Run the tests # diff --git a/fail2ban/tests/utils.py b/fail2ban/tests/utils.py index 764536bf..6d0828d4 100644 --- a/fail2ban/tests/utils.py +++ b/fail2ban/tests/utils.py @@ -43,6 +43,7 @@ from ..server.mytime import MyTime from ..server.utils import Utils # for action_d.test_smtp : from ..server import asyncserver +from ..version import version logSys = getLogger(__name__) @@ -73,6 +74,49 @@ class DefaultTestOptions(optparse.Values): # # Initialization # +def getOptParser(doc=""): + Option = optparse.Option + # use module docstring for help output + p = optparse.OptionParser( + usage="%s [OPTIONS] [regexps]\n" % sys.argv[0] + doc, + version="%prog " + version) + + p.add_options([ + Option('-l', "--log-level", type="choice", + dest="log_level", + choices=('heavydebug', 'debug', 'info', 'notice', 'warning', 'error', 'critical'), + default=None, + help="Log level for the logger to use during running tests"), + Option('-v', "--verbosity", action="store", + dest="verbosity", type=int, + default=None, + help="Set numerical level of verbosity (0..4)"), + Option("--log-direct", action="store_false", + dest="log_lazy", + default=True, + help="Prevent lazy logging inside tests"), + Option('-n', "--no-network", action="store_true", + dest="no_network", + help="Do not run tests that require the network"), + Option('-g', "--no-gamin", action="store_true", + dest="no_gamin", + help="Do not run tests that require the gamin"), + Option('-m', "--memory-db", action="store_true", + dest="memory_db", + help="Run database tests using memory instead of file"), + Option('-f', "--fast", action="store_true", + dest="fast", + help="Try to increase speed of the tests, decreasing of wait intervals, memory database"), + Option('-i', "--ignore", action="store_true", + dest="negate_re", + help="negate [regexps] filter to ignore tests matched specified regexps"), + Option("-t", "--log-traceback", action='store_true', + help="Enrich log-messages with compressed tracebacks"), + Option("--full-traceback", action='store_true', + help="Either to make the tracebacks full, not compressed (as by default)"), + ]) + return p + def initProcess(opts): # Logger: logSys = getLogger("fail2ban") @@ -123,7 +167,12 @@ def initProcess(opts): # stdout.setFormatter(Formatter(fmt)) logSys.addHandler(stdout) - # + + # Let know the version + if opts.verbosity != 0: + print("Fail2ban %s test suite. Python %s. Please wait..." \ + % (version, str(sys.version).replace('\n', ''))) + return opts;