language: php
dist: trusty
sudo: false

matrix:
  include:
    - php: 5.3
      dist: precise
      env: COMPOSER_FLAGS="--prefer-lowest"
    - php: 5.4
    - php: 5.5
    - php: 5.6
      env: SCRUTINIZER=1 PHPUNIT_FLAGS="--coverage-clover=coverage.xml"
    - php: 7.0
      env: COMPOSER_FLAGS="--prefer-lowest"
    - php: 7.1
      env: CS_FIXER=1
    - php: 7.2
    - php: 7.3
      env: BENCHMARK=1
    - php: 7.4
    - php: 8.0
      dist: bionic
  fast_finish: true

cache:
  directories:
    - $HOME/.composer/cache

before_script:
  - if [[ SCRUTINIZER != '1' ]]; then phpenv config-rm xdebug.ini || true; fi
  - composer self-update
  - if [[ ${TRAVIS_PHP_VERSION:0:1} == "8" ]]; then composer config platform.php 7.4; fi
  - composer update $COMPOSER_FLAGS --prefer-dist

script:
  - stty cols 120
  - if [ "$CS_FIXER" == 1 ]; then wget https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.13.1/php-cs-fixer.phar && php php-cs-fixer.phar fix --dry-run --diff; fi
  - mkdir -p build/logs
  - ./vendor/bin/phpunit $PHPUNIT_FLAGS

after_script:
  - if [ "$SCRUTINIZER" == 1 ]; then wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover coverage.xml; fi
  - if [ "$BENCHMARK" == 1 ]; then php test/benchmark/run.php 10; fi

notifications:
  irc: "irc.freenode.net#masterminds"
