language: python

dist: xenial
matrix:
  include:
    - env: FORMAT_CHECK
      language: cpp
      addons:
        apt:
          sources:
            - llvm-toolchain-xenial-7
          packages:
            - clang-7
            - clang-format-7
      before_install: skip
      install: skip
      script: ./travis-scripts/run-clang-format/run-clang-format.py -r torchvision/csrc
    - env: LINT_CHECK
      python: "2.7"
      install: pip install flake8 typing
      script: flake8 --exclude .circleci
      after_success: []
    - env: LINT_CHECK
      python: "3.6"
      install: pip install flake8 typing
      script: flake8 .circleci
      after_success: []
    - python: "2.7"
      env: IMAGE_BACKEND=Pillow-SIMD
    - python: "2.7"
    - python: "3.6"
      env: IMAGE_BACKEND=Pillow-SIMD
    - python: "3.6"

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
  # 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
  - pip install mock
  - pip install typing
  - |
    if [[ $TRAVIS_PYTHON_VERSION == 3.6 ]]; then
      pip install onnxruntime
    fi
  - conda install av -c conda-forge


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 -k 'not TestVideoReader and not TestVideoTransforms' test
  - pytest test/test_hub.py

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
