language: python
python:
  - "3.4"
  - "3.5"
  - "3.6"
  # - "pypy" - won't work as smmap doesn't work (see gitdb/.travis.yml for details)
matrix:
  include:
    - python: 3.7
      dist: xenial
    - python: "nightly"
      dist: xenial
  allow_failures:
    - python: "nightly"
      dist: xenial
git:
  # a higher depth is needed for most of the tests - must be high enough to not actually be shallow
  # as we clone our own repository in the process
  depth: 99999
install:
  - python --version; git --version
  - git submodule update --init --recursive
  - git fetch --tags
  - pip install -r test-requirements.txt
  - pip install -r doc/requirements.txt
  - pip install codecov

  # generate some reflog as git-python tests need it (in master)
  - ./init-tests-after-clone.sh

  # as commits are performed with the default user, it needs to be set for travis too
  - git config --global user.email "travis@ci.com"
  - git config --global user.name "Travis Runner"
  # If we rewrite the user's config by accident, we will mess it up
  # and cause subsequent tests to fail
  - cat git/test/fixtures/.gitconfig >> ~/.gitconfig
script:
  # Make sure we limit open handles to see if we are leaking them
  - ulimit -n 128
  - ulimit -n
  - nosetests -v --with-coverage
  - if [ "$TRAVIS_PYTHON_VERSION" == '3.5' ]; then cd doc && make html; fi
  - if [ "$TRAVIS_PYTHON_VERSION" == '3.6' ]; then flake8 --ignore=W293,E265,E266,W503,W504,E731; fi
after_success:
  - codecov
