Updated Settings API #207
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: Unit Tests | |
on: | |
# Run on all pushes and on all pull requests. | |
# Prevent the build from running when there are only irrelevant changes. | |
push: | |
paths-ignore: | |
- "**.md" | |
- "**.txt" | |
pull_request: | |
paths-ignore: | |
- "**.md" | |
- "**.txt" | |
# Allow manually triggering the workflow. | |
workflow_dispatch: | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# Notes regarding supported versions in WP: | |
# The base matrix only contains the PHP versions which are supported on all supported WP versions. | |
php: ["7.2", "7.3", "7.4", "8.0"] | |
wp: ["latest"] | |
experimental: [false] | |
include: | |
- php: "8.1" | |
wp: "trunk" | |
experimental: true | |
- php: "8.2" | |
wp: "trunk" | |
experimental: true | |
- php: "8.0" | |
wp: "5.6" | |
experimental: true | |
- php: "7.4" | |
wp: "5.5" | |
experimental: true | |
- php: "7.4" | |
wp: "latest" | |
experimental: true | |
name: "PHP ${{ matrix.php }} - WP ${{ matrix.wp }}" | |
continue-on-error: ${{ matrix.experimental }} | |
services: | |
mysql: | |
# WP 5.4 is the first WP version which largely supports MySQL 8.0. | |
# See: https://core.trac.wordpress.org/ticket/49344 | |
# During the setting up of these tests, it became clear that MySQL 8.0 | |
# in combination with PHP < 7.4 is not properly/sufficiently supported | |
# within WP Core. | |
# See: https://core.trac.wordpress.org/ticket/52496 | |
image: mysql:${{ ( matrix.wp == 5.3 && '5.6' ) || ( (matrix.wp < 5.4 || matrix.php < 7.4) && '5.7' ) || '8.0' }} | |
env: | |
MYSQL_ALLOW_EMPTY_PASSWORD: false | |
ports: | |
- 3306:3306 | |
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=10s --health-retries=10 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: none | |
extensions: mysqli | |
- name: Set up WordPress | |
run: phpunit/install.sh wordpress_test root '' 127.0.0.1:3306 ${{ matrix.wp }} | |
# Determine the type of Composer install which is needed. | |
# 1. WP 5.9 or higher - all PHPUnit versions needed are supported, use the most appropriate one. | |
# 2. WP 5.9 or higher with PHP 8.2 (RC) - not all dependencies of PHPUnit have declared PHP 8.2 compatibility, so needs ignore platform. | |
# 3. WP < 5.9 with PHP < 8.0 - PHPUnit 5 - 7 supported, use the most appropriate one. | |
# 4. WP < 5.9 with PHP 8.0 or higher - PHPUnit 5 - 7 supported, needs ignore platform reqs to install PHPUnit 7 for PHP >= 8.0. | |
- name: Determine the type of Composer install to use | |
id: composer_toggle | |
run: | | |
if [[ "${{ matrix.wp }}" =~ ^(trunk|latest|5\.9|[6789]\.[0-9])$ ]]; then | |
if [[ "${{ matrix.php }}" != "8.2" ]]; then | |
echo '::set-output name=TYPE::1' | |
else | |
echo '::set-output name=TYPE::2' | |
fi | |
elif [[ "${{ matrix.php }}" > "7.4" ]]; then | |
echo '::set-output name=TYPE::4' | |
else | |
echo '::set-output name=TYPE::3' | |
fi | |
# Remove the PHPUnit requirement for WP 5.9 and higher in favour of letting the Polyfills manage it. | |
# The Composer command will exit with error code 2 as the package is not removed, so ignore "failure" of this step. | |
- name: Conditionally remove PHPUnit requirement | |
if: ${{ steps.composer_toggle.outputs.TYPE == '1' || steps.composer_toggle.outputs.TYPE == '2' }} | |
continue-on-error: true | |
run: composer remove --dev phpunit/phpunit --no-update --no-interaction || true | |
# Install dependencies and handle caching in one go. | |
# @link https://github.com/marketplace/actions/install-composer-dependencies | |
- name: Install Composer dependencies - normal | |
if: ${{ steps.composer_toggle.outputs.TYPE == '1' || steps.composer_toggle.outputs.TYPE == '3' }} | |
uses: "ramsey/composer-install@v2" | |
# For PHP 8.0 and above on WP 5.2 - 5.8, we need to install with ignore platform reqs as not all dependencies allow it. | |
- name: Install Composer dependencies with ignore platform reqs | |
if: ${{ steps.composer_toggle.outputs.TYPE == '2' || steps.composer_toggle.outputs.TYPE == '4' }} | |
uses: "ramsey/composer-install@v2" | |
with: | |
composer-options: --ignore-platform-req=php | |
- name: Tool versions | |
continue-on-error: true | |
run: | | |
php --version | |
composer --version | |
vendor/bin/phpunit --version | |
- name: Run the unit tests - single site | |
run: vendor/bin/phpunit | |
- name: Run the unit tests - multisite | |
run: vendor/bin/phpunit | |
env: | |
WP_MULTISITE: 1 |