diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7aaf72..603a798 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,6 +66,66 @@ jobs: name: coverage-bundle path: coverage.xml + bundle-install-min: + name: Bundle — installabilité consommateur (PHP 8.2) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: bundle + + - name: Setup PHP 8.2 + uses: shivammathur/setup-php@v2 + with: + php-version: '8.2' + extensions: intl, opcache + coverage: none + tools: composer:v2 + + # Simulation FIDÈLE d'un consommateur (comme la recette Flex) : une app + # tierce qui fait `composer require` du bundle via un dépôt `path`. Seul le + # RUNTIME du bundle est résolu (jamais son require-dev), et la résolution est + # fraîche → sur PHP 8.2 Composer choisit Symfony ^7.3 (compatible), pas 8.x + # (qui exige ≥ 8.4.1). Prouve que le bundle s'installe dès PHP 8.2. + - name: Simuler un consommateur (composer require, runtime seul) + run: | + mkdir consumer && cd consumer + cat > composer.json <<'JSON' + { + "repositories": [ + { "type": "path", "url": "../bundle", "options": { "symlink": false } } + ], + "require": { "tailsfadmin/tailsfadmin-bundle": "*@dev" }, + "minimum-stability": "dev", + "prefer-stable": true + } + JSON + composer update --no-interaction --no-progress --prefer-dist + + bundle-compat: + name: Bundle — compat PHP (install + tests) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + php-version: ['8.3', '8.4'] + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: intl, opcache + coverage: none + tools: composer:v2 + + - name: Install (résolution fraîche) + run: composer update --no-interaction --no-progress --prefer-dist + + - name: Tests bundle + run: vendor/bin/phpunit + front-lint: name: Front — Biome (contrôleurs Stimulus) runs-on: ubuntu-latest diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bf670c..ef011fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ et le projet suit le [Semantic Versioning](https://semver.org/lang/fr/) 2.0.0. ## [Unreleased] +### Changed + +- **Support PHP élargi** : la contrainte minimale passe de `>=8.5` à **`>=8.2`** + (alignée sur Symfony 7.3, dont le minimum est PHP 8.2). Le bundle s'installe + désormais sur PHP 8.2 → 8.5. Compatibilité validée par PHPStan (plage 8.2→8.5), + un contrôle d'installabilité runtime en 8.2 et l'exécution des tests en 8.3/8.4 + (la suite PHPUnit 12/13 requiert PHP ≥ 8.3). Débloque la recette Flex + (symfony/recipes-contrib). + ## [1.4.2] — 2026-09-10 ### Fixed diff --git a/composer.json b/composer.json index 03fdd4c..831f08d 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ } ], "require": { - "php": ">=8.5", + "php": ">=8.2", "symfony/asset": "^7.3 || ^8.0", "symfony/asset-mapper": "^7.3 || ^8.0", "symfony/console": "^7.3 || ^8.0", diff --git a/composer.lock b/composer.lock index fcbce08..5fdf937 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "325c03accab861c9e0a025e66c2c9d34", + "content-hash": "cafda5cf38557505a60fa263e0dc6895", "packages": [ { "name": "composer/semver", @@ -7376,7 +7376,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.5" + "php": ">=8.2" }, "platform-dev": {}, "plugin-api-version": "2.9.0" diff --git a/phpstan.neon b/phpstan.neon index 34c2e62..6291920 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -4,6 +4,12 @@ includes: parameters: level: max + # Valide la compatibilité sur toute la plage PHP supportée (composer.json : >=8.2), + # même quand l'analyse tourne sur une version plus récente. + phpVersion: + min: 80200 + max: 80500 + paths: - src