language: php
dist: bionic

services:
  - mysql

env:
  - SYMFONY_DEPRECATIONS_HELPER=disabled APP_ENV=test # Disable deprecation warnings

# Test for all supported PHP versions
php:
  #- '7.1'
  - '7.2'
  - '7.3'
  - '7.4'

install:
  - composer install -o
  # Compile assets
  - yarn install
  - yarn build
  - php bin/console --env test doctrine:database:create --if-not-exists -n
  - php bin/console --env test doctrine:migrations:migrate -n
  # Load fixtures (We have to disable foreign key checks or we get errors)
  - mysql -e "SET GLOBAL FOREIGN_KEY_CHECKS=0;"
  - php bin/console --env test doctrine:fixtures:load -n
  - mysql -e "SET GLOBAL FOREIGN_KEY_CHECKS=1;"

before_script:
  # Disable Xdebug on non coverage builds
  - if [[ $(phpenv version-name) != '7.2' ]]; then phpenv config-rm xdebug.ini ; fi

script:
  # Only run code coverage on PHP 7.2 to improve performance (code coverage is slower than normal testing)
  - if [[ $(phpenv version-name) == '7.2' ]]; then php bin/phpunit --coverage-clover=coverage.xml ; fi
  - if [[ $(phpenv version-name) != '7.2' ]]; then php bin/phpunit ; fi

  # Perform some simple linting if everything is correct
  - ./bin/console lint:yaml config --parse-tags
  - ./bin/console lint:twig templates --env=prod
  - ./bin/console lint:xliff translations
  # Check if we dont use dependencies with known vulnerabilities
  - ./bin/console security:check
  # Check doctrine mapping
  - ./bin/console doctrine:schema:validate --skip-sync -vvv --no-interaction

  # Static analysis
  - ./bin/console cache:clear --env dev
  - composer phpstan

after_success:
  - if [[ $(phpenv version-name) == '7.2' ]]; then bash <(curl -s https://codecov.io/bash) ; fi
matrix:
  fast_finish: true