language: python
sudo: false
os: linux
dist: xenial
matrix:
  include:
    - python: "nightly"
    - python: "3.8-dev"
    - python: "3.8"
    - python: "3.7-dev"
    - python: "3.7"
    - python: "3.6-dev"
    - python: "3.6"
    - python: "3.5"
    - python: "2.7"
    - os: osx
      language: generic
  allow_failures:
    - python: nightly
    - python: 3.8-dev
    - python: 3.7-dev
    - python: 3.6-dev
services:
  - docker
addons:
  apt:
    packages:
      - python-commandnotfound
      - python3-commandnotfound
before_install:
  - if [[ $TRAVIS_OS_NAME == "osx" ]]; then rm -rf /usr/local/include/c++; fi
  - if [[ $TRAVIS_OS_NAME == "osx" ]]; then brew update; fi
  - if [[ $TRAVIS_OS_NAME == "osx" ]]; then brew unlink python@2; fi
  - if [[ $TRAVIS_OS_NAME == "osx" ]]; then brew upgrade python; fi
  - if [[ $TRAVIS_OS_NAME == "osx" ]]; then pip3 install virtualenv; fi
  - if [[ $TRAVIS_OS_NAME == "osx" ]]; then virtualenv venv -p python3; fi
  - if [[ $TRAVIS_OS_NAME == "osx" ]]; then source venv/bin/activate; fi
  - pip install -U pip
  - pip install -U coveralls
install:
  - pip install -Ur requirements.txt
  - python setup.py develop
  - rm -rf build
script:
  - flake8
  - export COVERAGE_PYTHON_VERSION=python-${TRAVIS_PYTHON_VERSION:0:1}
  - export RUN_TESTS="coverage run --source=thefuck,tests -m py.test -v --capture=sys tests"
  - if [[ $TRAVIS_PYTHON_VERSION == 3.8 && $TRAVIS_OS_NAME != "osx" ]]; then $RUN_TESTS --enable-functional; fi
  - if [[ $TRAVIS_PYTHON_VERSION != 3.8 || $TRAVIS_OS_NAME == "osx" ]]; then $RUN_TESTS; fi
after_success:
  - if [[ $TRAVIS_PYTHON_VERSION == 3.8 && $TRAVIS_OS_NAME != "osx" ]]; then coveralls; fi