name: Test application

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

jobs:
    php:
        name: "Run tests with php ${{ matrix.php-version }}"
        runs-on: ubuntu-16.04

        strategy:
            fail-fast: false
            matrix:
                include:
                    # lowest dependencies php 7.2
                    - php-version: '7.2'
                      composer-flags: '--prefer-lowest --prefer-stable --prefer-dist --no-interaction'

                    # highest dependencies php 7.3
                    - php-version: '7.3'
                      composer-flags: '--prefer-stable --prefer-dist --no-interaction'

                    # highest dependencies php 7.4
                    - php-version: '7.4'
                      composer-flags: '--prefer-stable --prefer-dist --no-interaction'

                    # highest dependencies php 8.0
                    - php-version: '8.0'
                      composer-flags: '--prefer-stable --prefer-dist --no-interaction'

        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: 'iconv'
                  tools: 'composer'

            - name: Get composer cache directory
              id: composer-cache-dir
              run: echo "::set-output name=dir::$(composer config cache-files-dir)"

            - name: Cache dependencies
              uses: actions/cache@v2
              id: composer-cache
              with:
                  path: ${{ steps.composer-cache-dir.outputs.dir }}
                  key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}
                  restore-keys: |
                      ${{ runner.os }}-composer-

            - name: Install dependencies
              run: |
                  composer validate --strict
                  composer update -o ${{ matrix.composer-flags }}

            - name: Install phpunit
              run: |
                  wget https://phar.phpunit.de/phpunit-5.phar -O phpunit.phar
                  chmod +x phpunit.phar

            - name: Run tests
              run: ./phpunit.phar -c tests/phpunit.xml.dist
