language: python

dist: xenial
matrix:
  include:
    - env: LINT_CHECK
      python: "2.7"
      install: pip install flake8
      script: flake8
      after_success: []
    - python: "2.7"
      env: IMAGE_BACKEND=Pillow-SIMD
    - python: "2.7"
    - python: "3.5"
      env: IMAGE_BACKEND=Pillow-SIMD
    - python: "3.5"

before_install:
  - sudo apt-get update
  - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
  - bash miniconda.sh -b -p $HOME/miniconda
  - export PATH="$HOME/miniconda/bin:$PATH"
  - hash -r
  - conda config --set always_yes yes --set changeps1 no
  - conda update -q conda
  # Useful for debugging any issues with conda
  - conda info -a

  - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION pytorch scipy -c pytorch
  - source activate test-environment
  - |
    if [[ "$IMAGE_BACKEND" == "Pillow-SIMD" ]]; then
      pip uninstall -y pillow && CC="cc -march=native" pip install --force-reinstall pillow-simd
    fi
  - pip install future
  - pip install pytest pytest-cov codecov


install:
  # Using pip instead of setup.py ensures we install a non-compressed version of the package
  # (as opposed to an egg), which is necessary to collect coverage.
  # We still get the benefit of testing an installed version over the
  # test version to iron out installation file-inclusion bugs but can
  # also collect coverage.
  - pip install .
  # Move to home dir, otherwise we'll end up with the path to the
  # package in $PWD rather than the installed v
  - |
    cd $HOME
    export TV_INSTALL_PATH="$(python -c 'import os; import torchvision; print(os.path.dirname(os.path.abspath(torchvision.__file__)))')"
    echo "$TV_INSTALL_PATH"
    cd -

script:
  - pytest --cov-config .coveragerc --cov torchvision --cov $TV_INSTALL_PATH test

after_success:
  # Necessary to run coverage combine to rewrite paths from
  # /travis/env/path/site-packages/torchvision to actual path
  - coverage combine .coverage
  - coverage report
  - codecov
