Skip to content

feat: Test Rector to upgrade code for PHP 8.1 #161

feat: Test Rector to upgrade code for PHP 8.1

feat: Test Rector to upgrade code for PHP 8.1 #161

name: PHP unit tests
on:
push:
branches:
- master
- 2.x
paths:
- '**workflows/php-unit-tests.yml'
- '**.php'
- '**composer.json'
- '**phpunit.xml'
pull_request:
branches:
- master
- 2.x
paths:
- '**workflows/php-unit-tests.yml'
- '**.php'
- '**composer.json'
- '**phpunit.xml'
types:
- opened
- synchronize
- ready_for_review
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
php-unit-tests:
runs-on: ubuntu-latest
services:
mysql:
image: mariadb:latest
env:
MYSQL_USER: root
MYSQL_ALLOW_EMPTY_PASSWORD: true
MYSQL_ROOT_PASSWORD: ''
MYSQL_DATABASE: wordpress_test
ports:
- 3306
options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
php: ['8.1', '8.2']
wp: ['latest', '6.2']
multisite: ['0', '1']
dependency-version: ['highest', 'lowest']
webp: [false]
coverage: [false]
extensions: ['gd']
experimental: [false]
include:
# PHP 8.2 / experimental
- php: '8.2'
wp: 'trunk'
dependency-version: 'highest'
multisite: '0'
experimental: true
# PHP 8.3 / experimental
- php: '8.3'
wp: 'trunk'
dependency-version: 'highest'
multisite: '0'
experimental: true
# PHP with Imagick
- php: '8.1'
wp: 'latest'
dependency-version: 'highest'
multisite: '0'
extensions: 'imagick'
experimental: false
# Coverage
- php: '8.1'
wp: 'latest'
dependency-version: 'highest'
multisite: '0'
coverage: true
experimental: false
name: PHP ${{ matrix.php }} ${{ matrix.extensions == 'imagick' && ' (Imagick)' || '' }}${{ matrix.coverage && ' (with coverage)' || '' }} ${{ matrix.webp && ' (webp)' || '' }} | WP ${{ matrix.wp }}${{ matrix.multisite == 1 && ' (MS)' || '' }} | ${{ matrix.dependency-version }}
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: ${{ matrix.coverage && 'pcov' || 'none' }}
tools: composer:v2
extensions: curl, date, dom, iconv, json, libxml, mysql, ${{ matrix.extensions }}
ini-values: pcov.directory=src
- name: Shutdown default MySQL service
run: sudo service mysql stop
- name: Verify MariaDB connection
run: |
while ! mysqladmin ping -h"127.0.0.1" -P"${{ job.services.mysql.ports[3306] }}" --silent; do
sleep 1
done
- name: Setup problem matchers for PHP
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- name: Setup problem matchers for PHPUnit
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
- uses: ramsey/composer-install@v3
with:
dependency-versions: ${{ matrix.dependency-version }}
- name: Install tests
run: bash bin/install-wp-tests.sh wordpress_test root '' 127.0.0.1:${{ job.services.mysql.ports['3306'] }} ${{ matrix.wp }} true
- name: Run tests
if: ${{ !matrix.webp }}
run: composer run test
env:
WP_MULTISITE: ${{ matrix.multisite }}
- name: Run tests with coverage
if: matrix.coverage == true
run: |
composer run test:integration:codecov
- name: Upload coverage results to Coveralls
if: matrix.coverage == true
env:
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
composer global require php-coveralls/php-coveralls
php-coveralls --coverage_clover=${GITHUB_WORKSPACE}/build/logs/clover.xml -v
- name: Run webp tests
if: matrix.webp
run: vendor/phpunit/phpunit/phpunit -c phpunit.xml --verbose --filter 'TestTimberImageToWEBP'