summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Hiscocks <steven@hiscocks.me.uk>2013-04-20 20:17:36 +0100
committerSteven Hiscocks <steven@hiscocks.me.uk>2013-04-20 20:17:36 +0100
commit55810a3c30a745d5b099b40c42d0446b492ea995 (patch)
tree74391f7f9c91b9bdee5edcb6d1f829b0ae77b090
parent9e684abad7b88e93cd66962798723a72427fc819 (diff)
downloadfail2ban-55810a3c30a745d5b099b40c42d0446b492ea995.tar.gz
TST+RF: Add ability to execute test from setup.py with setuptools
Note that the fail2ban version can no longer be imported from "fail2ban.version", as this breaks 2to3 conversion for tests
-rw-r--r--.travis.yml4
-rwxr-xr-xsetup.py39
2 files changed, 36 insertions, 7 deletions
diff --git a/.travis.yml b/.travis.yml
index 3edadda1..8cfeeff1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,10 +13,8 @@ install:
- pip install pyinotify
- if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then sudo apt-get install -qq python-gamin; fi
- if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then pip install -q coveralls; fi
-before_script:
- - if [[ $TRAVIS_PYTHON_VERSION == 3* ]]; then ./fail2ban-2to3; fi
script:
- if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then export PYTHONPATH="$PYTHONPATH:/usr/share/pyshared:/usr/lib/pyshared/python2.7"; fi
- - if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then coverage run --rcfile=.travis_coveragerc bin/fail2ban-testcases; else python bin/fail2ban-testcases; fi
+ - if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then coverage run --rcfile=.travis_coveragerc setup.py test; else python setup.py test; fi
after_success:
- if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then coveralls; fi
diff --git a/setup.py b/setup.py
index 57b75225..4b6e304e 100755
--- a/setup.py
+++ b/setup.py
@@ -22,7 +22,13 @@ __author__ = "Cyril Jaquier"
__copyright__ = "Copyright (c) 2004 Cyril Jaquier"
__license__ = "GPL"
-from distutils.core import setup
+try:
+ import setuptools
+ from setuptools import setup
+except ImportError:
+ setuptools = None
+ from distutils.core import setup
+
try:
# python 3.x
from distutils.command.build_py import build_py_2to3 as build_py
@@ -36,7 +42,23 @@ from os.path import isfile, join, isdir
import sys
from glob import glob
-from fail2ban.version import version
+if setuptools and "test" in sys.argv:
+ import logging
+ logSys = logging.getLogger("fail2ban")
+ hdlr = logging.StreamHandler(sys.stdout)
+ fmt = logging.Formatter("%(asctime)-15s %(message)s")
+ hdlr.setFormatter(fmt)
+ logSys.addHandler(hdlr)
+ if set(["-q", "--quiet"]) & set(sys.argv):
+ logSys.setLevel(logging.FATAL)
+ logging.captureWarnings(True)
+ elif set(["-v", "--verbose"]) & set(sys.argv):
+ logSys.setLevel(logging.DEBUG)
+ else:
+ logSys.setLevel(logging.INFO)
+elif "test" in sys.argv:
+ print("python distribute required to execute fail2ban tests")
+ print("")
longdesc = '''
Fail2Ban scans log files like /var/log/pwdfail or
@@ -45,9 +67,17 @@ too many password failures. It updates firewall rules
to reject the IP address or executes user defined
commands.'''
+if setuptools:
+ setup_extra = {
+ 'test_suite': "fail2ban.tests.utils.gatherTests",
+ 'use_2to3': True,
+ }
+else:
+ setup_extra = {}
+
setup(
name = "fail2ban",
- version = version,
+ version = "0.9.0a",
description = "Ban IPs that make too many password failures",
long_description = longdesc,
author = "Cyril Jaquier",
@@ -88,7 +118,8 @@ setup(
('/usr/share/doc/fail2ban',
['README', 'DEVELOP', 'doc/run-rootless.txt']
)
- ]
+ ],
+ **setup_extra
)
# Do some checks after installation