language: php

php:
  - 5.4
  - 5.5
  - 5.6
  - hhvm
  - hhvm-nightly

env:
  - CUBRID_VERSION=9.3.0/CUBRID-9.3.0.0206 CUBRID_PDO_VERSION=9.3.0.0001

# run build against hhvm but allow them to fail
# http://docs.travis-ci.com/user/build-configuration/#Rows-That-are-Allowed-To-Fail
matrix:
  fast_finish: true
  allow_failures:
    - php: hhvm-nightly

services:
  - redis-server
  - memcached
  - elasticsearch
  - mongodb

# faster builds on new travis setup not using sudo
sudo: false

# cache vendor dirs
cache:
  directories:
#    - cubrid # caching cubrid breaks the build on a regular basis and has nearly no speedup
    - vendor
    - $HOME/.composer/cache

# try running against postgres 9.3
addons:
  postgresql: "9.3"

install:
  - travis_retry composer self-update && composer --version
  - travis_retry composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
  - export PATH="$HOME/.composer/vendor/bin:$PATH"
# core framework:
  - travis_retry composer install --prefer-dist --no-interaction
  - tests/unit/data/travis/mongodb-setup.sh
# TODO: APC currently fails composer. https://github.com/composer/composer/issues/3405
#  - tests/unit/data/travis/apc-setup.sh
  - tests/unit/data/travis/memcache-setup.sh
  - tests/unit/data/travis/cubrid-setup.sh
# print elasticsearch version
  - curl http://localhost:9200
# codeception
  - travis_retry composer global require "codeception/codeception=2.0.*" "codeception/specify=*" "codeception/verify=*"
# basic and advanced application:
  - tests/unit/data/travis/setup-apps.sh

before_script:
  - echo 'elasticsearch version ' && curl http://localhost:9200/
  - mysql -e 'CREATE DATABASE yiitest;';
  - psql -U postgres -c 'CREATE DATABASE yiitest;';
  - tests/unit/data/travis/sphinx-setup.sh
  - mongo yii2test --eval 'db.addUser("travis", "test");'
# basic and advanced application:
  - tests/unit/data/travis/init-apps.sh

script:
  - vendor/bin/phpunit --verbose --coverage-clover=coverage.clover --exclude-group mssql,oci,wincache,xcache,zenddata
  - |
    if (php --version | grep -i HipHop > /dev/null); then
      echo "Skipping basic application tests on HHVM"
    else
      cd apps/basic/web
      php -S localhost:8080 > /dev/null 2>&1 &
      cd ../tests
      codecept run
    fi
  - |
    if (php --version | grep -i HipHop > /dev/null); then
      echo "Skipping advanced application tests on HHVM"
    else
      cd apps/advanced
      php -S localhost:8080 > /dev/null 2>&1 &
      cd tests
      codecept run
    fi

after_script:
  - cd ../../..
  - travis_retry wget https://scrutinizer-ci.com/ocular.phar
  - php ocular.phar code-coverage:upload --format=php-clover coverage.clover
