mirror of https://github.com/fail2ban/fail2ban
simplify fail2ban-testcases: move some code pieces inclusive option parser from fail2ban-testcases to tests/utils.py (+ coverage)
parent
f7f618b15d
commit
af126eb308
|
@ -37,11 +37,9 @@ if os.path.exists("fail2ban/__init__.py"):
|
||||||
sys.path.insert(0, ".")
|
sys.path.insert(0, ".")
|
||||||
from fail2ban.version import version
|
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 fail2ban.setup import updatePyExec
|
||||||
|
|
||||||
from optparse import OptionParser, Option
|
|
||||||
|
|
||||||
# Update fail2ban-python env to current python version (where f2b-modules located/installed)
|
# Update fail2ban-python env to current python version (where f2b-modules located/installed)
|
||||||
bindir = os.path.dirname(
|
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.):
|
# __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)
|
updatePyExec(bindir)
|
||||||
|
|
||||||
def get_opt_parser():
|
(opts, regexps) = getOptParser(__doc__).parse_args()
|
||||||
# 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()
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Process initialization corresponding options (logging, default options, etc.)
|
# Process initialization corresponding options (logging, default options, etc.)
|
||||||
|
@ -103,13 +56,10 @@ opts = initProcess(opts)
|
||||||
verbosity = opts.verbosity
|
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)
|
tests = gatherTests(regexps, opts)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Run the tests
|
# Run the tests
|
||||||
#
|
#
|
||||||
|
|
|
@ -43,6 +43,7 @@ from ..server.mytime import MyTime
|
||||||
from ..server.utils import Utils
|
from ..server.utils import Utils
|
||||||
# for action_d.test_smtp :
|
# for action_d.test_smtp :
|
||||||
from ..server import asyncserver
|
from ..server import asyncserver
|
||||||
|
from ..version import version
|
||||||
|
|
||||||
|
|
||||||
logSys = getLogger(__name__)
|
logSys = getLogger(__name__)
|
||||||
|
@ -73,6 +74,49 @@ class DefaultTestOptions(optparse.Values):
|
||||||
#
|
#
|
||||||
# Initialization
|
# 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):
|
def initProcess(opts):
|
||||||
# Logger:
|
# Logger:
|
||||||
logSys = getLogger("fail2ban")
|
logSys = getLogger("fail2ban")
|
||||||
|
@ -123,7 +167,12 @@ def initProcess(opts):
|
||||||
#
|
#
|
||||||
stdout.setFormatter(Formatter(fmt))
|
stdout.setFormatter(Formatter(fmt))
|
||||||
logSys.addHandler(stdout)
|
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;
|
return opts;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue