Release: 3.0.1 #373
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: Test | |
on: | |
# Run on pushes to `main` and on all pull requests. | |
# Prevent the "push" build from running when there are only irrelevant changes. | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
# Allow manually triggering the workflow. | |
workflow_dispatch: | |
# Cancels all previous workflow runs for the same branch that have not yet completed. | |
concurrency: | |
# The concurrency group contains the workflow name and the branch name. | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
#### PHP LINT STAGE #### | |
# Linting against high/low PHP versions should catch everything. | |
# If needs be, we can always add interim versions at a later point in time. | |
lint: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
php: ['5.4', 'latest', '8.4'] | |
name: "Lint: PHP ${{ matrix.php }}" | |
continue-on-error: ${{ matrix.php == '8.4' }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: none | |
tools: cs2pr | |
- name: Install Composer dependencies | |
uses: "ramsey/composer-install@v3" | |
with: | |
# Bust the cache at least once a month - output format: YYYY-MM. | |
custom-cache-suffix: $(date -u "+%Y-%m") | |
- name: Lint against parse errors | |
run: ./bin/php-lint --checkstyle | cs2pr | |
test: | |
# No use running the tests if there is a linting error somewhere as they would fail anyway. | |
needs: lint | |
runs-on: ubuntu-latest | |
strategy: | |
# Keys: | |
# - php: The PHP versions to test against. | |
# - dependencies: The PHPCS dependencies versions to test against. | |
# IMPORTANT: test runs shouldn't fail because of PHPCS being incompatible with a PHP version. | |
# - PHPCS will run without errors on PHP 5.4 - 7.4 on any supported version. | |
# - PHP 8.0 needs PHPCS 3.5.7+ to run without errors, and we require a higher minimum version. | |
# - PHP 8.1 needs PHPCS 3.6.1+ to run without errors, but works best with 3.7.1+, and we require at least this minimum version. | |
# - PHP 8.2 and 8.3 need PHPCS 3.8.0+ to run without errors (though the errors don't affect the tests). | |
matrix: | |
php: ['5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3'] | |
dependencies: ['lowest', 'stable'] | |
include: | |
# Test against dev versions of all dependencies with select PHP versions for early detection of issues. | |
- php: '5.4' | |
dependencies: 'dev' | |
- php: '7.0' | |
dependencies: 'dev' | |
- php: '7.4' | |
dependencies: 'dev' | |
- php: '8.3' | |
dependencies: 'dev' | |
# Test against upcoming PHP version. | |
- php: '8.4' | |
dependencies: 'dev' | |
name: "Test: PHP ${{ matrix.php }} - PHPCS ${{ matrix.dependencies }}" | |
continue-on-error: ${{ matrix.php == '8.4' }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
# With stable PHPCS dependencies, allow for PHP deprecation notices. | |
# Unit tests don't need to fail on those for stable releases where those issues won't get fixed anymore. | |
- name: Setup ini config | |
id: set_ini | |
run: | | |
if [[ "${{ matrix.dependencies }}" != "dev" ]]; then | |
echo 'PHP_INI=error_reporting=E_ALL & ~E_DEPRECATED, display_errors=On' >> $GITHUB_OUTPUT | |
else | |
echo 'PHP_INI=error_reporting=-1, display_errors=On' >> $GITHUB_OUTPUT | |
fi | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
ini-values: ${{ steps.set_ini.outputs.PHP_INI }} | |
coverage: none | |
- name: "Composer: set PHPCS dependencies for tests (dev)" | |
if: ${{ matrix.dependencies == 'dev' }} | |
run: > | |
composer require --no-update --no-scripts --no-interaction | |
squizlabs/php_codesniffer:"dev-master" | |
phpcsstandards/phpcsutils:"dev-develop" | |
phpcsstandards/phpcsextra:"dev-develop" | |
sirbrillig/phpcs-variable-analysis:"2.x" | |
wp-coding-standards/wpcs:"dev-develop" | |
# Install dependencies and handle caching in one go. | |
# @link https://github.com/marketplace/actions/install-php-dependencies-with-composer | |
- name: Install Composer dependencies | |
uses: "ramsey/composer-install@v3" | |
with: | |
# Bust the cache at least once a month - output format: YYYY-MM. | |
custom-cache-suffix: $(date -u "+%Y-%m") | |
- name: "Composer: downgrade PHPCS dependencies for tests (lowest)" | |
if: ${{ matrix.dependencies == 'lowest' }} | |
run: > | |
composer update --prefer-lowest --no-scripts --no-interaction | |
squizlabs/php_codesniffer | |
phpcsstandards/phpcsutils | |
phpcsstandards/phpcsextra | |
sirbrillig/phpcs-variable-analysis | |
wp-coding-standards/wpcs | |
- name: Run the unit tests | |
run: ./bin/unit-tests | |
- name: Run the ruleset tests | |
run: ./bin/ruleset-tests |