language: go

sudo: required

os:
    - linux
    - osx
go:
    - 1.5.x
    - 1.6.x
    - 1.7.x
    - 1.8.x
    - 1.9.x
    - 1.10.x
    - 1.11.x
    - 1.12.x
    - 1.13.x
    - 1.14.x
    - tip

matrix:
    allow_failures:
        - go: tip
    exclude:
          # OSX 1.6.4 is not present in travis.
          # https://github.com/travis-ci/travis-ci/issues/10309
        - go: 1.6.x
          os: osx
        - go: 1.5.x
          os: osx
    include:
        - os: windows
          go: 1.12.x
        - os: windows
          go: 1.13.x
        - os: windows
          go: 1.14.x
        - os: windows
          go: tip

before_install:
  - if [ "$TRAVIS_OS_NAME" = "windows" ]; then choco install make; fi

script:
  - if [ -z $(go env GOMOD) ]; then
      if [ "$TRAVIS_GO_VERSION" == "1.12.x" ] ||
          [ "$TRAVIS_GO_VERSION" == "1.11.x" ] ||
          [ "$TRAVIS_GO_VERSION" == "1.10.x" ]; then
        make get-deps-x-tests;
      fi;
      make get-deps;
    fi;
    if [ "$TRAVIS_GO_VERSION" == "tip" ] ||
        [ "$TRAVIS_GO_VERSION" == "1.14.x" ] ||
        [ "$TRAVIS_GO_VERSION" == "1.13.x" ]; then

      if [ "$TRAVIS_OS_NAME" = "windows" ]; then
        make unit-no-verify;
      else
        make get-deps-verify;
        make ci-test;
      fi
    else
      make unit-old-go-race-cover;
    fi

branches:
  only:
    - master
