name: Test application

on:
    pull_request:
    push:
        branches:
            - '[0-9]+.x'
            - '[0-9]+.[0-9]+'

jobs:
    test:
        name: 'PHP ${{ matrix.php-version }} (${{ matrix.dependency-versions }}, Lint ${{ matrix.lint }})'
        runs-on: ubuntu-latest

        env:
            DATABASE_URL: 'mysql://root:root@127.0.0.1/sulu_community_test?serverVersion=5.7'

        strategy:
            fail-fast: false
            matrix:
                include:
                    - php-version: '7.2'
                      lint: false
                      dependency-versions: 'lowest'
                      tools: 'composer:v1'
                      env:
                          SYMFONY_DEPRECATIONS_HELPER: disabled

                    - php-version: '7.4'
                      lint: true
                      dependency-versions: 'highest'
                      tools: 'composer:v2'
                      env:
                          SYMFONY_DEPRECATIONS_HELPER: weak

                    - php-version: '8.0'
                      lint: false
                      dependency-versions: 'highest'
                      tools: 'composer:v2'
                      env:
                          SYMFONY_DEPRECATIONS_HELPER: weak

        services:
            mysql:
                image: mysql:5.7
                env:
                    MYSQL_ROOT_PASSWORD: root
                ports:
                    - 3306:3306
                options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5

        steps:
            - name: Checkout project
              uses: actions/checkout@v2

            - name: Install and configure PHP
              uses: shivammathur/setup-php@v2
              with:
                  php-version: ${{ matrix.php-version }}
                  extensions: 'mysql, gd'
                  tools: ${{ matrix.tools }}

            - name: Install composer dependencies
              uses: ramsey/composer-install@v1
              with:
                  dependency-versions: ${{matrix.dependency-versions}}
                  composer-options: ${{ matrix.composer-options }}

            - name: Bootstrap test environment
              run: composer bootstrap-test-environment
              env: ${{ matrix.env }}

            - name: Lint code
              if: ${{ matrix.lint }}
              run: |
                  Tests/Application/bin/adminconsole sulu:community:init -vvv --env test
                  composer lint
              env: ${{ matrix.env }}

            - name: Execute test cases
              run: composer test
              env: ${{ matrix.env }}
