name: Coverage
on:
    pull_request: null
    push:
        branches:
            - master
jobs:
    tests:
        runs-on: ubuntu-latest
        services:
            mysql:
                image: mysql:5.7
                env:
                    MYSQL_ALLOW_EMPTY_PASSWORD: false
                    MYSQL_ROOT_PASSWORD: kimai
                    MYSQL_DATABASE: kimai
                ports:
                    - 3306/tcp
                options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
        strategy:
            matrix:
                php: ['8.0']

        name: Coverage (${{ matrix.php }})
        steps:

            -   name: Clone Kimai
                uses: actions/checkout@v2

            -   name: Setup PHP
                uses: shivammathur/setup-php@v2
                with:
                    php-version: ${{ matrix.php }}
                    coverage: pcov
                    extensions: mbstring, xml, ctype, iconv, intl, mysql, zip, gd, ldap

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

            -   name: Cache Composer dependencies
                uses: actions/cache@v2
                with:
                    path: "${{ steps.composer-cache.outputs.directory }}"
                    key: ${{ runner.os }}-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }}

            -   name: Install dependencies
                run: composer install

            -   name: Install LDAP package
                run: composer require laminas/laminas-ldap

            -   name: Setup problem matchers for PHPUnit
                run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"

            -   name: Run tests
                run: vendor/bin/phpunit tests/ --coverage-clover=coverage.xml
                env:
                    DATABASE_URL: mysql://root:kimai@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/kimai?serverVersion=5.7
                    APP_ENV: dev
                    MAILER_URL: null://localhost
                    TEST_WITH_BUNDLES: 1

            -   name: Upload code coverage
                uses: codecov/codecov-action@v2
                with:
                    token: ${{ secrets.CODECOV_TOKEN }}
                    files: ./coverage.xml
                    fail_ci_if_error: true
