language: c

sudo: false

cache:
  directories:
    - $HOME/travis-cache

os:
  - linux
  - osx

compiler:
  - clang
  - gcc

addons:
  apt:
    packages:
    - language-pack-is

env:
  global:
    - P4_VERSION="15.2"
    - GIT_LFS_VERSION="1.1.0"
    - DEFAULT_TEST_TARGET=prove
    - GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
    - GIT_TEST_OPTS="--verbose --tee"
    - CFLAGS="-g -O2 -Wall -Werror"
    - GIT_TEST_CLONE_2GB=YesPlease
    # t9810 occasionally fails on Travis CI OS X
    # t9816 occasionally fails with "TAP out of sequence errors" on Travis CI OS X
    - GIT_SKIP_TESTS="t9810 t9816"

before_install:
  - >
    case "${TRAVIS_OS_NAME:-linux}" in
    linux)
      mkdir --parents custom/p4
      pushd custom/p4
        wget --quiet http://filehost.perforce.com/perforce/r$P4_VERSION/bin.linux26x86_64/p4d
        wget --quiet http://filehost.perforce.com/perforce/r$P4_VERSION/bin.linux26x86_64/p4
        chmod u+x p4d
        chmod u+x p4
        export PATH="$(pwd):$PATH"
      popd
      mkdir --parents custom/git-lfs
      pushd custom/git-lfs
        wget --quiet https://github.com/github/git-lfs/releases/download/v$GIT_LFS_VERSION/git-lfs-linux-amd64-$GIT_LFS_VERSION.tar.gz
        tar --extract --gunzip --file "git-lfs-linux-amd64-$GIT_LFS_VERSION.tar.gz"
        cp git-lfs-$GIT_LFS_VERSION/git-lfs .
        export PATH="$(pwd):$PATH"
      popd
      ;;
    osx)
      brew_force_set_latest_binary_hash () {
        FORMULA=$1
        SHA=$(brew fetch --force $FORMULA 2>&1 | grep ^SHA256: | cut -d ' ' -f 2)
        sed -E -i.bak "s/sha256 \"[0-9a-f]{64}\"/sha256 \"$SHA\"/g" \
          /usr/local/Library/Taps/homebrew/homebrew-binary/$FORMULA.rb
      }
      brew update --quiet
      brew tap homebrew/binary --quiet
      brew_force_set_latest_binary_hash perforce
      brew_force_set_latest_binary_hash perforce-server
      brew install git-lfs perforce-server perforce gettext
      brew link --force gettext
      ;;
    esac;
    echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)";
    p4d -V | grep Rev.;
    echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)";
    p4 -V | grep Rev.;
    echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)";
    git-lfs version;
    mkdir -p $HOME/travis-cache;
    ln -s $HOME/travis-cache/.prove t/.prove;

before_script: make --jobs=2

script: make --quiet test

after_failure:
  - >
    : '<-- Click here to see detailed test output!                                                        ';
    for TEST_EXIT in t/test-results/*.exit;
    do
      if [ "$(cat "$TEST_EXIT")" != "0" ];
      then
        TEST_OUT="${TEST_EXIT%exit}out";
        echo "------------------------------------------------------------------------";
        echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)";
        echo "------------------------------------------------------------------------";
        cat "${TEST_OUT}";
      fi;
    done;

notifications:
  email: false
