-
Notifications
You must be signed in to change notification settings - Fork 13
129 lines (111 loc) · 4.11 KB
/
unit-tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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.1', '7.2', '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.0'
wp: 'latest'
experimental: true
- php: '8.0'
wp: '5.6'
experimental: true
- php: '7.4'
wp: '5.3'
experimental: true
- php: '7.1'
wp: '5.1'
experimental: true
- php: '7.4'
wp: 'nightly'
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@v2
- 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 '::set-output name=PHPUNIT::7.5.*'
else
echo '::set-output name=PHPUNIT::5.7.*||6.*||7.5.*'
fi
- name: 'Composer: set up PHPUnit'
run: composer require --no-update phpunit/phpunit:"${{ steps.set_phpunit.outputs.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