Files
peptide-e2e/.gitea/actions/ci-phpunit/action.yml

79 lines
2.7 KiB
YAML

name: CI - PHPUnit
description: >-
composer test for one PHP version (Gitea port of the phpunit job). For
tests=wp-framework the caller declares a `mysql` service; on Gitea runners it is
reached by its service name, not 127.0.0.1 as on GitHub VMs.
inputs:
php:
required: true
tests:
description: "stubs | brain-monkey | wp-framework"
required: false
default: stubs
db_host:
required: false
default: mysql
runs:
using: composite
steps:
- name: Install subversion (wp-framework only)
if: ${{ inputs.tests == 'wp-framework' }}
shell: bash
run: command -v svn >/dev/null || (sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends subversion)
- name: Use preinstalled PHP ${{ inputs.php }} (peptide-php image)
id: pre
shell: bash
env:
V: ${{ inputs.php }}
run: |
if command -v "php$V" >/dev/null 2>&1 && command -v composer >/dev/null 2>&1; then
update-alternatives --set php "/usr/bin/php$V" >/dev/null 2>&1 || ln -sf "/usr/bin/php$V" /usr/local/bin/php
php -v | head -1; echo "hit=true" >> "$GITHUB_OUTPUT"
else
echo "hit=false" >> "$GITHUB_OUTPUT"
fi
- name: Setup PHP ${{ inputs.php }} (fallback when not preinstalled)
if: ${{ steps.pre.outputs.hit != 'true' }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ inputs.php }}
coverage: none
tools: composer:v2
extensions: ${{ inputs.tests == 'wp-framework' && 'mysqli' || '' }}
- name: Install Composer dependencies
shell: bash
run: composer install --no-progress --no-interaction --prefer-dist
- name: Wait for MySQL (wp-framework only)
if: ${{ inputs.tests == 'wp-framework' }}
shell: bash
env:
DB_HOST: ${{ inputs.db_host }}
run: |
for i in $(seq 1 30); do
if (exec 3<>/dev/tcp/$DB_HOST/3306) 2>/dev/null; then echo "MySQL is up"; exit 0; fi
echo "Waiting for MySQL... ($i/30)"; sleep 2
done
echo "::error::MySQL at $DB_HOST:3306 never came up"; exit 1
- name: Install WordPress test suite (wp-framework only)
# skip-db-create=true: the service already created wp_tests.
# WP_CORE_DIR must end with a slash (concatenated verbatim into ABSPATH).
if: ${{ inputs.tests == 'wp-framework' }}
shell: bash
env:
WP_TESTS_DIR: /tmp/wordpress-tests-lib
WP_CORE_DIR: /tmp/wordpress/
DB_HOST: ${{ inputs.db_host }}
run: |
chmod +x bin/install-wp-tests.sh
bin/install-wp-tests.sh wp_tests root root "$DB_HOST:3306" latest true
- name: Run PHPUnit
shell: bash
env:
WP_TESTS_DIR: /tmp/wordpress-tests-lib
run: composer test