diff --git a/.gitattributes b/.gitattributes index 70d08e4..9d6b713 100644 --- a/.gitattributes +++ b/.gitattributes @@ -13,6 +13,7 @@ .gitignore export-ignore .phpactor.json export-ignore CHANGELOG.md export-ignore +composer-dependency-analyser.php export-ignore docs/ export-ignore phpstan-baseline.neon export-ignore phpstan-bootstrap.php export-ignore diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 2d2a281..aa64e7f 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -69,10 +69,20 @@ jobs: - name: Install dependencies run: | + # The matrix pins below rewrite composer.json for this job only. + # Put the published file back before validate and the dependency analyser. + cp composer.json "$RUNNER_TEMP/composer.json.orig" composer remove --dev --no-update larastan/larastan phpstan/phpstan-deprecation-rules phpstan/phpstan-phpunit phpstan/extension-installer composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update composer require --dev --no-update "nunomaduro/collision:^8.0" composer update --${{ matrix.stability }} --prefer-dist --no-interaction --with-all-dependencies + mv "$RUNNER_TEMP/composer.json.orig" composer.json + + - name: Validate composer.json + run: composer validate --strict --no-check-lock + + - name: Analyse composer dependencies + run: vendor/bin/composer-dependency-analyser - name: Execute tests run: vendor/bin/pest diff --git a/composer-dependency-analyser.php b/composer-dependency-analyser.php new file mode 100644 index 0000000..562aba4 --- /dev/null +++ b/composer-dependency-analyser.php @@ -0,0 +1,20 @@ +ignoreErrorsOnPackage('laravel/framework', [ErrorType::SHADOW_DEPENDENCY]) + ->ignoreErrorsOnPackages( + [ + 'illuminate/collections', + 'illuminate/console', + 'illuminate/http', + 'illuminate/process', + 'illuminate/support', + ], + [ErrorType::UNUSED_DEPENDENCY], + ); diff --git a/composer.json b/composer.json index bcc6176..9ed70c1 100644 --- a/composer.json +++ b/composer.json @@ -48,7 +48,8 @@ "pestphp/pest-plugin-laravel": "^2.3||^3.0||^4.0", "phpstan/extension-installer": "^1.3", "phpstan/phpstan-deprecation-rules": "^1.1||^2.0", - "phpstan/phpstan-phpunit": "^1.3||^2.0" + "phpstan/phpstan-phpunit": "^1.3||^2.0", + "shipmonk/composer-dependency-analyser": "^1.8" }, "autoload": { "psr-4": {