language: go

matrix:
  include:
  - go: 1.11.x
    env: VET=1 GO111MODULE=on
  - go: 1.11.x
    env: RACE=1 GO111MODULE=on
  - go: 1.11.x
    env: RUN386=1
  - go: 1.11.x
    env: GRPC_GO_RETRY=on
  - go: 1.10.x
  - go: 1.9.x
  - go: 1.9.x
    env: GAE=1
  - go: 1.8.x
  - go: 1.6.x

go_import_path: google.golang.org/grpc

before_install:
  - if [[ "${GO111MODULE}" = "on" ]]; then mkdir "${HOME}/go"; export GOPATH="${HOME}/go"; fi
  - if [[ -n "${RUN386}" ]]; then export GOARCH=386; fi
  - if [[ "${TRAVIS_EVENT_TYPE}" = "cron" && -z "${RUN386}" ]]; then RACE=1; fi
  - if [[ "${TRAVIS_EVENT_TYPE}" != "cron" ]]; then VET_SKIP_PROTO=1; fi

install:
  - try3() { eval "$*" || eval "$*" || eval "$*"; }
  - try3 'if [[ "${GO111MODULE}" = "on" ]]; then go mod download; else make testdeps; fi'
  - if [[ "${GAE}" = 1 ]]; then source ./install_gae.sh; make testappenginedeps; fi
  - if [[ "${VET}" = 1 ]]; then ./vet.sh -install; fi

script:
  - set -e
  - if [[ "${VET}" = 1 ]]; then ./vet.sh; fi
  - if [[ "${GAE}" = 1 ]]; then make testappengine; exit 0; fi
  - if [[ "${RACE}" = 1 ]]; then make testrace; exit 0; fi
  - make test
