# Two types of tests:
#
# 1. shell tests run using bats
# 2. build tests also run using bats
#
# Shell tests are run unconditionally on Linux (see jobs.include).
#
# Build tests can be skipped by starting the commit message with
# '[skip build]'.
#
# Build tests are run on platforms generated from all combinations
# of keys below.
language: c

os:
- linux
- osx

dist:
- focal

# https://docs.travis-ci.com/user/reference/osx/#macos-version
osx_image:
- xcode9.4.1  # macOS 10.13.6
- xcode10.3   # macOS 10.14.4
- xcode11.6   # macOS 10.15.7
- xcode12.2   # macOS 10.15.7

env:
- PYTHON_BUILD_VERSION=3.9.1
- PYTHON_BUILD_VERSION=3.7.5

before_install:
- date +%Y-%m-%dT%H:%M:%S

install: git clone --depth 1 --branch v1.2.0 https://github.com/bats-core/bats-core.git bats

# Default for auto-generated jobs.
script: make test-build

jobs:
  include:
  # Shell-based tests should execute every time.
  - stage: test shell
    script: make test
    env: PYENV_NATIVE_EXT=1
    after_script: []
    os: linux
  - stage: test shell
    script: make test
    env: PYENV_NATIVE_EXT=
    after_script: []
    os: linux

  exclude:
  # For each osx_image but one there should be an entry in the exclude
  # list, to prevent duplicate Linux builds.
  - os: linux
    osx_image: xcode9.4
  - os: linux
    osx_image: xcode10

  allow_failures:
  - env: PYTHON_BUILD_VERSION=3.9.1

stages:
- test shell
- name: test
  if: NOT (commit_message =~ /^\[skip build\]/)

# Default 

notifications:
  email:
    on_success: never

deploy:
  provider: releases
  api_key:
    secure: FLWevL09KYp7V1SjJUNEdWzuomuocXwNvPr1DSAFH7mmrjKTtjzwrjINAthSqzjlDrs5B//P47l1VLyHp5byEzy673W+bOmEg8swmqc7E9FrHLRyEByd/yca3DzkZgXEXgGdY/cl7tHhM4V2fYKEgAIWbFV+takmTFMK4WkEtNg=
  on:
    repo: pyenv/pyenv
    tags: true