Skip to content

Tests

Tests #128

Workflow file for this run

name: Tests
on:
push:
pull_request:
branches: [ '*.x' ]
workflow_dispatch:
schedule:
- cron: '0 8 * * *'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
phpunit:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: [ '8.1', '8.2', '8.3', '8.4', '8.5' ]
phpunit: [ '10.5', '11.5', '12.5', '13.0', '13.1', '13.2' ]
dependencies: [ 'highest', 'lowest' ]
exclude:
- php: '8.1'
phpunit: '11.5'
- php: '8.1'
phpunit: '12.5'
- php: '8.2'
phpunit: '12.5'
- php: '8.1'
phpunit: '13.0'
- php: '8.1'
phpunit: '13.1'
- php: '8.1'
phpunit: '13.2'
- php: '8.2'
phpunit: '13.0'
- php: '8.2'
phpunit: '13.1'
- php: '8.2'
phpunit: '13.2'
- php: '8.3'
phpunit: '13.0'
- php: '8.3'
phpunit: '13.1'
- php: '8.3'
phpunit: '13.2'
name: PHP ${{ matrix.php }} & PHPUnit ${{ matrix.phpunit }}${{ matrix.dependencies == 'lowest' && ' (lowest)' || '' }} Test
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
ini-values: zend.exception_ignore_args=false
- name: Require PHPUnit Version
run: composer require --dev phpunit/phpunit:${{ matrix.phpunit }}.* --no-update
- name: Adjust PHPUnit 10 Configuration
if: matrix.phpunit == '10.5'
run: |
sed -i 's/failOnPhpunitDeprecation="true"//g' phpunit.dist.xml phpunit-functional.dist.xml
sed -i 's/failOnPhpunitNotice="true"//g' phpunit.dist.xml phpunit-functional.dist.xml
- name: Adjust PHPUnit 11 Configuration
if: matrix.phpunit == '11.5'
run: sed -i 's/failOnPhpunitNotice="true"//g' phpunit.dist.xml phpunit-functional.dist.xml
- name: Install Dependencies
uses: ramsey/composer-install@v4
with:
composer-options: '--prefer-dist'
dependency-versions: ${{ matrix.dependencies }}
- name: Run Unit Tests
run: vendor/bin/phpunit --log-junit=junit.xml --coverage-text --coverage-clover=coverage.xml
- name: Run Functional Tests
run: vendor/bin/phpunit -c phpunit-functional.dist.xml --log-junit=junit-functional.xml
- name: Publish Test Report
uses: mikepenz/action-junit-report@v6
if: always()
with:
annotate_only: true
fail_on_failure: true
require_tests: true
report_paths: ./junit*.xml
- name: Upload Test Coverage
if: ${{ success() }}
uses: codecov/codecov-action@v7
with:
files: coverage.xml
flags: ${{ matrix.php }}
token: ${{ secrets.CODECOV_TOKEN }}