Issue 235 fix #109
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Tests" | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
coding-standard: | |
runs-on: ubuntu-22.04 | |
name: Coding standards | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.1' | |
coverage: none | |
tools: cs2pr | |
# Install dependencies and handle caching in one go. | |
# @link https://github.com/marketplace/actions/install-composer-dependencies | |
- name: Install Composer dependencies | |
uses: "ramsey/composer-install@v2" | |
- name: Check coding standards | |
continue-on-error: true | |
run: ./vendor/bin/phpcs -s --report-full --report-checkstyle=./phpcs-report.xml | |
- name: Show PHPCS results in PR | |
run: cs2pr ./phpcs-report.xml | |
lint: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
php: ['7.4', '8.0', '8.1', '8.2', '8.3'] | |
experimental: [false] | |
name: "Lint: PHP ${{ matrix.php }}" | |
continue-on-error: ${{ matrix.experimental }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: none | |
tools: cs2pr | |
# Install dependencies and handle caching in one go. | |
# @link https://github.com/marketplace/actions/install-composer-dependencies | |
- name: Install Composer dependencies | |
uses: "ramsey/composer-install@v2" | |
- name: Lint against parse errors | |
if: ${{ matrix.php != '8.1' }} | |
run: composer lint -- --checkstyle | cs2pr | |
- name: Lint against parse errors (PHP 8.1) | |
if: ${{ matrix.php == '8.1' }} | |
run: composer lint | |
test: | |
needs: ['coding-standard', 'lint'] | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
php: ['7.4', '8.0', '8.1', '8.2', '8.3'] | |
coverage: [false] | |
experimental: [false] | |
include: | |
# Run code coverage on high/low PHP. | |
- php: '7.4' | |
coverage: true | |
experimental: false | |
- php: '8.0' | |
coverage: true | |
experimental: false | |
- php: '8.1' | |
coverage: true | |
experimental: false | |
- php: '8.2' | |
coverage: true | |
experimental: false | |
- php: '8.3' | |
coverage: true | |
experimental: false | |
name: "Test: PHP ${{ matrix.php }}" | |
continue-on-error: ${{ matrix.experimental }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }} | |
ini-values: sendmail_path=/usr/sbin/sendmail -t -i, error_reporting=E_ALL, display_errors=On | |
extensions: imap, mbstring, intl, ctype, filter, hash | |
# Install dependencies and handle caching in one go. | |
# @link https://github.com/marketplace/actions/install-composer-dependencies | |
- name: Install dependencies | |
if: ${{ matrix.php != '8.1' }} | |
uses: "ramsey/composer-install@v2" | |
- name: Install dependencies - ignore-platform-reqs | |
if: ${{ matrix.php == '8.1' }} | |
uses: "ramsey/composer-install@v2" | |
with: | |
composer-options: --ignore-platform-reqs | |
- name: Run tests, no code coverage | |
if: ${{ matrix.coverage }} | |
run: ./vendor/bin/phpunit --no-coverage | |
- name: Run tests with code coverage | |
if: ${{ matrix.coverage }} | |
run: ./vendor/bin/phpunit | |
- name: Send coverage report to Codecov | |
if: ${{ success() && matrix.coverage }} | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./build/logs/clover.xml | |
fail_ci_if_error: true | |
verbose: true |