mirror of
https://github.com/php-flasher/php-flasher.git
synced 2026-03-31 15:07:47 +01:00
d9c65d274b
Updates the test workflow to correctly handle "-dev" Symfony versions. Sets the composer minimum-stability to "dev" and prefers stable dependencies when testing against development versions of Symfony. This ensures that the latest dependencies are used during testing of development versions and also runs update with --prefer-lowest only when not on a dev branch.
194 lines
8.0 KiB
YAML
194 lines
8.0 KiB
YAML
name: qa
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- 2.x
|
|
pull_request:
|
|
schedule:
|
|
- cron: '0 0 * * *' # Daily at midnight
|
|
|
|
jobs:
|
|
static-analysis:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
php: [ 8.2 ]
|
|
|
|
name: php v${{ matrix.php }}
|
|
|
|
steps:
|
|
- name: 📥 Checkout Code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 🔧 Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
coverage: none
|
|
|
|
- name: 🚚 Cache Composer Dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.composer/cache
|
|
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }}
|
|
restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}-
|
|
|
|
- name: 📦 Install Dependencies
|
|
run: |
|
|
composer config --global allow-plugins true
|
|
composer install --no-interaction --prefer-dist --optimize-autoloader
|
|
|
|
- name: 🧹 Run PHP CS Fixer (Code Style)
|
|
run: vendor/bin/php-cs-fixer fix --dry-run --diff
|
|
|
|
- name: 🔍 Run PHPStan (Static Analysis)
|
|
run: vendor/bin/phpstan analyse --no-progress
|
|
|
|
- name: 🚀 Run PHPLint (Syntax Check)
|
|
run: vendor/bin/phplint
|
|
|
|
prime-test:
|
|
needs: static-analysis
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- { php: 8.4, phpunit: 10.5.* }
|
|
- { php: 8.3, phpunit: 10.5.* }
|
|
- { php: 8.2, phpunit: 10.5.* }
|
|
|
|
name: php v${{ matrix.php }}
|
|
|
|
steps:
|
|
- name: 📥 Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 🔧 Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
coverage: none
|
|
|
|
- name: 🚚 Cache dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.composer/cache
|
|
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }}
|
|
restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}-
|
|
|
|
- name: 📦 Install dependencies
|
|
run: |
|
|
sed -i '/"require": {/,/},/d; /"require-dev": {/,/},/d' composer.json
|
|
composer config --global allow-plugins true
|
|
composer require "phpunit/phpunit:${{ matrix.phpunit }}" "mockery/mockery" "psr/container" --no-interaction --no-update
|
|
composer update --prefer-lowest -W --no-interaction --prefer-dist --optimize-autoloader
|
|
|
|
- name: ✅ Execute tests
|
|
run: vendor/bin/phpunit --testsuite prime
|
|
|
|
symfony-test:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- { symfony: 8.0.x-dev, php: 8.4, phpunit: 10.5.* }
|
|
- { symfony: 7.4.x-dev, php: 8.2, phpunit: 10.5.* }
|
|
- { symfony: 7.3.*, php: 8.5, phpunit: 10.5.* }
|
|
- { symfony: 7.3.*, php: 8.4, phpunit: 10.5.* }
|
|
- { symfony: 7.3.*, php: 8.3, phpunit: 10.5.* }
|
|
- { symfony: 7.3.*, php: 8.2, phpunit: 10.5.* }
|
|
- { symfony: 7.2.*, php: 8.2, phpunit: 10.5.* }
|
|
- { symfony: 7.1.*, php: 8.2, phpunit: 10.5.* }
|
|
- { symfony: 7.0.*, php: 8.2, phpunit: 10.5.* }
|
|
|
|
name: symfony v${{ matrix.symfony }} x php v${{ matrix.php }}
|
|
|
|
steps:
|
|
- name: 📥 Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 🔧 Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
coverage: none
|
|
|
|
- name: 🚚 Cache dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.composer/cache
|
|
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }}
|
|
restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}-
|
|
|
|
- name: 📦 Install dependencies
|
|
run: |
|
|
sed -i '/"require": {/,/},/d; /"require-dev": {/,/},/d' composer.json
|
|
composer config --global allow-plugins true
|
|
composer config extra.symfony.require "${{ matrix.symfony }}"
|
|
|
|
if [[ "${{ matrix.symfony }}" == *"-dev"* ]]; then
|
|
echo "Setting minimum-stability to dev for ${{ matrix.symfony }}"
|
|
composer config minimum-stability "dev"
|
|
composer config prefer-stable true
|
|
fi
|
|
|
|
composer require "symfony/config:${{ matrix.symfony }}" "symfony/console:${{ matrix.symfony }}" "symfony/dependency-injection:${{ matrix.symfony }}" "symfony/framework-bundle:${{ matrix.symfony }}" "symfony/http-kernel:${{ matrix.symfony }}" "symfony/translation:${{ matrix.symfony }}" "symfony/twig-bundle:${{ matrix.symfony }}" "phpunit/phpunit:${{ matrix.phpunit }}" "mockery/mockery" "psr/container" "monolog/monolog" --no-interaction --no-update
|
|
|
|
if [[ "${{ matrix.symfony }}" == *"-dev"* ]]; then
|
|
echo "Running composer update (latest dependencies)"
|
|
composer update -W --no-interaction --prefer-dist --optimize-autoloader
|
|
else
|
|
echo "Running composer update --prefer-lowest"
|
|
composer update --prefer-lowest -W --no-interaction --prefer-dist --optimize-autoloader
|
|
fi
|
|
|
|
- name: ✅ Execute tests
|
|
run: vendor/bin/phpunit --testsuite symfony
|
|
|
|
laravel-test:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- { laravel: 12.*, testbench: 10.*, php: 8.5, phpunit: 11.5.* }
|
|
- { laravel: 12.*, testbench: 10.*, php: 8.4, phpunit: 11.5.* }
|
|
- { laravel: 12.*, testbench: 10.*, php: 8.3, phpunit: 11.5.* }
|
|
- { laravel: 12.*, testbench: 10.*, php: 8.2, phpunit: 11.5.* }
|
|
- { laravel: 11.*, testbench: 9.*, php: 8.2, phpunit: 10.5.* }
|
|
|
|
name: laravel v${{ matrix.laravel }} x php v${{ matrix.php }}
|
|
|
|
steps:
|
|
- name: 📥 Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 🔧 Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
extensions: fileinfo
|
|
coverage: none
|
|
|
|
- name: 🚚 Cache dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.composer/cache
|
|
key: ${{ matrix.php }}-composer-${{ hashFiles('composer.json') }}
|
|
restore-keys: ${{ matrix.php }}-composer
|
|
|
|
- name: 📦 Install dependencies
|
|
run: |
|
|
sed -i '/\"require\": {/,/},/d; /\"require-dev\": {/,/},/d' composer.json
|
|
composer config --global allow-plugins true
|
|
composer require "laravel/framework:${{ matrix.laravel }}" "phpunit/phpunit:${{ matrix.phpunit }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
|
|
composer update --prefer-lowest -W --no-interaction --prefer-dist --optimize-autoloader
|
|
|
|
- name: ✅ Execute tests
|
|
run: vendor/bin/phpunit --testsuite laravel
|