--- # This GitHub Actions workflow calculates the code coverage of the extension and uploads it to coveralls.io. name: Code coverage on: push: branches: - main pull_request: permissions: contents: read jobs: code-coverage: name: "Calculate code coverage" permissions: actions: write runs-on: ubuntu-24.04 env: DB_DATABASE: typo3 DB_USER: root DB_PASSWORD: root DB_HOST: localhost steps: - name: "Checkout" uses: actions/checkout@v4 - name: "Install PHP" uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php-version }}" ini-file: development tools: composer:v2, phive extensions: mysqli coverage: xdebug - name: "Install development tools" run: phive --no-progress install --trust-gpg-keys D8406D0D82947747293778314AA394086372C20A - name: "Show Composer version" run: composer --version - name: "Show the Composer configuration" run: composer config --global --list - name: "Cache dependencies installed with composer" uses: actions/cache@v4 with: key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}" path: ~/.cache/composer restore-keys: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-\n" - name: "Install TYPO3 Core" env: TYPO3: "${{ matrix.typo3-version }}" run: | composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"$TYPO3" composer show - name: "Install lowest dependencies with composer" if: "matrix.composer-dependencies == 'lowest'" run: | composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest composer show - name: "Install highest dependencies with composer" if: "matrix.composer-dependencies == 'highest'" run: | composer update --no-ansi --no-interaction --no-progress --with-dependencies composer show - name: "Start MySQL" run: "sudo /etc/init.d/mysql start" - name: "Run unit tests with coverage" run: composer ci:coverage:unit - name: "Show generated coverage files" run: "ls -lahR .Build/coverage/" - name: "Run functional tests with coverage" run: | export typo3DatabaseName="$DB_DATABASE"; export typo3DatabaseHost="$DB_HOST"; export typo3DatabaseUsername="$DB_USER"; export typo3DatabasePassword="$DB_PASSWORD"; composer ci:coverage:functional - name: "Show generated coverage files" run: "ls -lahR .Build/coverage/" - name: "Merge coverage results" run: composer ci:coverage:merge - name: "Show generated coverage files" run: "ls -lahR .Build/coverage/" - name: "Upload coverage results to Coveralls" env: COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: .Build/bin/php-coveralls --coverage_clover=.Build/coverage/combined.xml -v strategy: fail-fast: false matrix: include: - typo3-version: "^12.4" php-version: "8.3" composer-dependencies: highest