Autoloading and classes #148
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: 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: ['8.0', '7.3', '7.4'] | |
wp: ['latest'] | |
experimental: [false] | |
include: | |
# Complement the builds run via the matrix with high/low WP builds for PHP 7.4 and 8.0. | |
# PHP 8.0 is sort of supported since WP 5.6. | |
# PHP 7.4 is supported since WP 5.3. | |
- php: '8.3' | |
wp: 'latest' | |
experimental: true | |
- php: '8.2' | |
wp: 'latest' | |
experimental: true | |
- php: '8.1' | |
wp: 'latest' | |
experimental: true | |
- php: '8.0' | |
wp: '5.9' | |
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@v4 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
tools: phpunit-polyfills | |
coverage: none | |
# The PHP 5.6 and 7.0 images don't include mysql[i] by default. | |
extensions: mysqli | |
- name: Set up WordPress | |
run: phpunit/install.sh wordpress_test root '' 127.0.0.1:3306 ${{ matrix.wp }} | |
# On WP 5.2, PHPUnit 5.x, 6.x and 7.x are supported. | |
# On PHP >= 8.0, PHPUnit 7.5+ is needed, no matter what. | |
- name: Determine supported PHPUnit version | |
id: set_phpunit | |
run: | | |
if [[ "${{ matrix.php }}" > "7.4" ]]; then | |
echo "PHPUNIT=8.5.*" >> $GITHUB_ENV | |
else | |
echo "PHPUNIT=5.7.*||6.*||7.5.*" >> $GITHUB_ENV | |
fi | |
- name: 'Composer: set up PHPUnit' | |
env: | |
PHPUNIT: ${{ env.PHPUNIT }} | |
run: composer require --no-update phpunit/phpunit:"${{ env.PHPUNIT }}" | |
# Install dependencies and handle caching in one go. | |
# @link https://github.com/marketplace/actions/install-composer-dependencies | |
- name: Install Composer dependencies for PHP < 8.0 | |
if: ${{ matrix.php < 8.0 }} | |
uses: "ramsey/composer-install@v2" | |
# For the PHP 8.0 and above, we need to install with ignore platform reqs as not all dependencies allow it yet. | |
- name: Install Composer dependencies for PHP >= 8.0 | |
if: ${{ matrix.php >= 8.0 }} | |
uses: "ramsey/composer-install@v2" | |
with: | |
composer-options: --ignore-platform-reqs | |
- name: 'Run Composer Update' | |
run: | | |
composer update --ignore-platform-reqs | |
- name: Tool versions | |
run: | | |
php --version | |
composer --version | |
phpunit --version | |
which phpunit | |
- 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 |