129 lines
4.0 KiB
YAML
129 lines
4.0 KiB
YAML
name: PHPUnit
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- '*.x'
|
|
pull_request:
|
|
branches:
|
|
- '*.x'
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
php: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5']
|
|
dependency-version: [prefer-lowest, prefer-stable]
|
|
exclude:
|
|
# PHPUnit 12 has compatibility issues with prefer-lowest on multiple PHP versions
|
|
- php: '8.1'
|
|
dependency-version: prefer-lowest
|
|
- php: '8.2'
|
|
dependency-version: prefer-lowest
|
|
- php: '8.3'
|
|
dependency-version: prefer-lowest
|
|
- php: '8.4'
|
|
dependency-version: prefer-lowest
|
|
- php: '8.5'
|
|
dependency-version: prefer-lowest
|
|
|
|
name: P${{ matrix.php }} - ${{ matrix.dependency-version }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo, json
|
|
coverage: none
|
|
|
|
- name: Setup problem matchers
|
|
run: |
|
|
echo "::add-matcher::${{ runner.tool_cache }}/php.json"
|
|
echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
|
|
|
|
- name: Cache Composer packages
|
|
id: composer-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: vendor
|
|
key: ${{ runner.os }}-php-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-php-${{ matrix.php }}-
|
|
|
|
- name: Configure platform for PHP 8.5
|
|
if: matrix.php == '8.5'
|
|
run: composer config platform.php 8.4.0
|
|
|
|
- name: Install dependencies
|
|
run: composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-progress
|
|
|
|
- name: List Installed Dependencies
|
|
run: composer show -D
|
|
|
|
- name: Execute tests
|
|
run: vendor/bin/phpunit --no-coverage
|
|
|
|
coverage:
|
|
runs-on: ubuntu-latest
|
|
name: Coverage
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: 8.3
|
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo, json
|
|
coverage: xdebug3
|
|
|
|
- name: Cache Composer packages
|
|
id: composer-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: vendor
|
|
key: ${{ runner.os }}-php-8.3-${{ hashFiles('**/composer.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-php-8.3-
|
|
|
|
- name: Install dependencies
|
|
run: composer install --prefer-dist --no-interaction --no-progress
|
|
|
|
- name: Check Xdebug status
|
|
run: php -m | grep -i xdebug
|
|
|
|
- name: Execute tests with coverage
|
|
run: |
|
|
echo "Current working directory: $(pwd)"
|
|
echo "PHPUnit command: vendor/bin/phpunit --coverage-text --coverage-clover=coverage.clover"
|
|
export XDEBUG_MODE=coverage
|
|
echo "Xdebug mode set to: $XDEBUG_MODE"
|
|
vendor/bin/phpunit --coverage-text --coverage-clover=coverage.clover
|
|
echo "PHPUnit exit code: $?"
|
|
|
|
- name: Check if coverage file was created
|
|
run: |
|
|
echo "Checking for coverage file..."
|
|
echo "Current directory contents:"
|
|
ls -la
|
|
echo "Looking for clover files:"
|
|
ls -la *.clover 2>/dev/null || echo "No clover files found in current directory"
|
|
echo "Searching entire directory tree:"
|
|
find . -name "*.clover" -type f 2>/dev/null || echo "No clover files found anywhere"
|
|
echo "Checking if Xdebug coverage mode is working:"
|
|
php -r "echo 'Xdebug mode: ' . (getenv('XDEBUG_MODE') ?: 'not set') . PHP_EOL;"
|
|
|
|
- name: Upload coverage reports to Codecov
|
|
uses: codecov/codecov-action@v5
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
files: coverage.clover
|
|
fail_ci_if_error: false |