language: php
sudo: required

branches:
  only:
    - master

php:
  - 7.1
  - 7.2
  - 7.3
  - 7.4

env:
  global:
    - SABRE_MYSQLUSER="root"
    - SABRE_MYSQLPASS=""
    - SABRE_MYSQLDSN="mysql:host=127.0.0.1;dbname=sabredav_test"
    - RUN_PHPCSFIXER="TRUE"
    - RUN_PHPUNIT="TRUE"
    - RUN_PHPSTAN="FALSE"
  matrix:
    - PREFER_LOWEST="" TEST_DEPS="" REPORT_COVERAGE="TRUE" WITH_COVERAGE="--coverage-clover=coverage.xml"
    - PREFER_LOWEST="--prefer-lowest" TEST_DEPS="tests/Sabre/" REPORT_COVERAGE="FALSE" WITH_COVERAGE=""

matrix:
  include:
    - name: 'PHP8'
      dist: bionic
      php: 8.0
      env:
        - RUN_PHPCSFIXER="FALSE"
        - REPORT_COVERAGE="FALSE"
    - name: 'PHPStan'
      php: 7.4
      env:
        - RUN_PHPCSFIXER="FALSE"
        - RUN_PHPUNIT="FALSE"
        - RUN_PHPSTAN="TRUE"
        - REPORT_COVERAGE="FALSE"
    - name: 'Test with streaming propfind'
      php: 7.2
      env:
        - RUN_TEST_WITH_STREAMING_PROPFIND="TRUE"
        - REPORT_COVERAGE="FALSE"
  fast_finish: true

services:
  - mysql
  - postgresql

before_script:
  - mysql -u root -h 127.0.0.1 -e 'create database sabredav_test'
  - psql -c "create database sabredav_test" -U postgres
  - psql -c "create user sabredav with PASSWORD 'sabredav';GRANT ALL PRIVILEGES ON DATABASE sabredav_test TO sabredav" -U postgres
  - if [ $RUN_PHPCSFIXER == "FALSE" ]; then composer remove --no-update --dev friendsofphp/php-cs-fixer; fi
  - composer update $PREFER_LOWEST

addons:
  postgresql: "9.5"

script:
  - if [ $RUN_PHPCSFIXER == "TRUE" ]; then php vendor/bin/php-cs-fixer fix --dry-run --diff; fi
  - if [ $RUN_PHPUNIT == "TRUE" ]; then php vendor/bin/phpunit --configuration tests/phpunit.xml $WITH_COVERAGE $TEST_DEPS; fi
  - if [ $RUN_PHPUNIT == "TRUE"  ]; then rm -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini; fi
  - if [ $RUN_PHPSTAN == "TRUE" ]; then composer phpstan; fi

after_success:
  - if [ $REPORT_COVERAGE == "TRUE" ]; then bash <(curl -s https://codecov.io/bash); fi

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