Skip to content

Reorganize tests dir structure (#17) #38

Reorganize tests dir structure (#17)

Reorganize tests dir structure (#17) #38

Workflow file for this run

name: wp
on:
workflow_dispatch:
pull_request:
types: [opened, reopened, synchronize]
branches:
- main
paths:
- ".github/workflows/wp.yml"
- "**.php"
- "composer.json"
- "phpcs.xml.dist"
- "phpstan.neon.dist"
- "phpunit.xml.dist"
push:
branches:
- main
paths:
- ".github/workflows/wp.yml"
- "**.php"
- "composer.json"
- "phpcs.xml.dist"
- "phpstan.neon.dist"
- "phpunit.xml.dist"
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get Composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Setup Composer cache
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: php-7.4-composer-${{ hashFiles('**/composer.json') }}
restore-keys: php-7.4-composer-
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
tools: composer:v2
- name: Install dependencies
run: composer install --prefer-dist
- name: Lint codes
run: composer phpcs
test:
runs-on: ubuntu-latest
env:
WP_DB_TEST_NAME: wp_test
WP_DB_TEST_PASS: wp_test
WP_DB_TEST_USER: wp_test
PHP_EXTENSIONS: mysqli
strategy:
fail-fast: true
matrix:
php: ['7.4', '8.0', '8.1', '8.2', '8.3']
wp: ['6.*', '5.*']
services:
database:
image: 'mariadb:10.11.5'
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: ${{ env.WP_DB_TEST_NAME }}
MYSQL_USER: ${{ env.WP_DB_TEST_USER }}
MYSQL_PASSWORD: ${{ env.WP_DB_TEST_PASS }}
ports:
- 3306:3306
options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 10
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true
- name: Get Composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Setup PHP extensions cache environment
id: php-ext-cache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.PHP_EXTENSIONS }}
key: php-${{ matrix.php }}-ext
- name: Setup PHP extensions cache
uses: actions/cache@v4
with:
path: ${{ steps.php-ext-cache.outputs.dir }}
key: ${{ steps.php-ext-cache.outputs.key }}
restore-keys: ${{ steps.php-ext-cache.outputs.key }}
- name: Setup Composer cache
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: php-${{ matrix.php }}-composer-
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: ${{ env.PHP_EXTENSIONS }}
tools: composer:v2
- name: Install dependencies
run: |
composer require "wp-phpunit/wp-phpunit:${{ matrix.wp }}" "roots/wordpress:${{ matrix.wp }}" --no-interaction --no-update --dev
composer install --prefer-dist
- name: Run test
run: |
composer phpstan
vendor/bin/phpunit --coverage-clover coverage.xml
env:
WP_DB_TEST_HOST: 127.0.0.1:${{ job.services.database.ports['3306'] }}
WP_ENVIRONMENT_TYPE: development
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}