# vim ft=yaml
# travis-ci.org definition for Fail2Ban build
# https://travis-ci.org/fail2ban/fail2ban/
language: python
python:
  - 2.6
  - 2.7
  - pypy
  # disabled until coverage module fixes up compatibility issue
  # - 3.2
  - 3.3
  - 3.4
  - 3.5
  - 3.6
  - 3.7-dev
  # disabled since setuptools dropped support for Python 3.0 - 3.2
  # - pypy3
  - pypy3.3-5.5-alpha
before_install:
  - echo "running under $TRAVIS_PYTHON_VERSION"
  - if [[ $TRAVIS_PYTHON_VERSION == 2* || $TRAVIS_PYTHON_VERSION == pypy* && $TRAVIS_PYTHON_VERSION != pypy3* ]]; then export F2B_PY=2; fi
  - if [[ $TRAVIS_PYTHON_VERSION == 3* || $TRAVIS_PYTHON_VERSION == pypy3* ]]; then export F2B_PY=3; fi
  - echo "Set F2B_PY=$F2B_PY"
  - travis_retry sudo apt-get update -qq
  # Set this so sudo executes the correct python binary
  #   Anything not using sudo will already have the correct environment
  - export VENV_BIN="$VIRTUAL_ENV/bin" && echo "VENV_BIN set to $VENV_BIN"
install:
  # Install Python packages / dependencies
  #   coverage
  - travis_retry pip install coverage
  #   coveralls (note coveralls doesn't support 2.6 now):
  - if [[ $TRAVIS_PYTHON_VERSION != 2.6* ]]; then F2B_COV=1; else F2B_COV=0; fi
  - if [[ "$F2B_COV" = 1 ]]; then travis_retry pip install coveralls; fi
  #   codecov:
  - travis_retry pip install codecov
  #   dnspython or dnspython3
  - if [[ "$F2B_PY" = 2 ]]; then travis_retry pip install dnspython; fi
  - if [[ "$F2B_PY" = 3 ]]; then travis_retry pip install dnspython3; fi
  #   gamin - install manually (not in PyPI) - travis-ci system Python is 2.7
  - if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then travis_retry sudo apt-get install -qq python-gamin && cp /usr/share/pyshared/gamin.py /usr/lib/pyshared/python2.7/_gamin.so $VIRTUAL_ENV/lib/python2.7/site-packages/; fi
  #   pyinotify
  - travis_retry pip install pyinotify
before_script:
  # Manually execute 2to3 for now
  - if [[ "$F2B_PY" = 3 ]]; then ./fail2ban-2to3; fi
script:
  # Keep the legacy setup.py test approach of checking coverage for python2
  - if [[ "$F2B_PY" = 2 ]]; then coverage run setup.py test; fi
  # Coverage doesn't pick up setup.py test with python3, so run it directly (with same verbosity as from setup)
  - if [[ "$F2B_PY" = 3 ]]; then coverage run bin/fail2ban-testcases --verbosity=2; fi
  # Use $VENV_BIN (not python) or else sudo will always run the system's python (2.7)
  - sudo $VENV_BIN/pip install .
  # Doc files should get installed on Travis under Linux
  - test -e /usr/share/doc/fail2ban/FILTERS
after_success:
  - if [[ "$F2B_COV" = 1 ]]; then coveralls; fi
  - codecov
matrix:
  fast_finish: true
# Might be worth looking into
#notifications:
#  email: true
#  irc:
#    channels: "irc.freenode.org#fail2ban"
#    template:
#      - "%{repository}@%{branch}: %{message} (%{build_url})"
#    on_success: change
#    on_failure: change
#    skip_join: true
