Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Use a patch file to update the package in the result-cache-package-up…
…date e2e test

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
  • Loading branch information
SanderMuller and claude committed Jul 23, 2026
commit 28582d5cd69e91bb587a0a40400d4b423c6fdeee
12 changes: 7 additions & 5 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -405,13 +405,15 @@ jobs:
cd e2e/result-cache-package-update
composer install
../../bin/phpstan analyse
# Simulate a single Composer package being updated by changing its recorded reference in
# vendor/composer/installed.php. The cache must be invalidated only for files depending on
# that package (src/Foo.php uses psr/log), not for the whole project.
php -r '$f = "vendor/composer/installed.php"; $d = require $f; $d["versions"]["psr/log"]["reference"] = "0000000000000000000000000000000000000000"; file_put_contents($f, "<?php return " . var_export($d, true) . ";" . PHP_EOL);'
# Update a single Composer package by bumping its version with a patch and letting Composer
# reinstall it, which changes its recorded reference in vendor/composer/installed.php. The
# cache must be invalidated only for files depending on that package (src/Foo.php uses
# test/logger), not for the whole project.
patch -p1 < updatePackage.patch
composer update test/logger --no-cache
OUTPUT=$(../bashunit -a exit_code "0" "../../bin/phpstan analyse -vv")
echo "$OUTPUT"
../bashunit -a contains 'Composer packages changed (psr/log); re-analysing only the files depending on them.' "$OUTPUT"
../bashunit -a contains 'Composer packages changed (test/logger); re-analysing only the files depending on them.' "$OUTPUT"
../bashunit -a contains 'Result cache restored. 1 file will be reanalysed.' "$OUTPUT"
- script: |
cd e2e/bug-12606
Expand Down
11 changes: 10 additions & 1 deletion e2e/result-cache-package-update/composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
{
"name": "phpstan/result-cache-package-update-e2e",
"repositories": [
{
"type": "path",
"url": "./logger",
"options": {
"symlink": false
}
}
],
"require": {
"psr/log": "^3.0"
"test/logger": "*"
},
"autoload": {
"classmap": ["src"]
Expand Down
1 change: 1 addition & 0 deletions e2e/result-cache-package-update/logger/composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "name": "test/logger", "version": "1.0.0", "autoload": { "classmap": ["src"] } }
12 changes: 12 additions & 0 deletions e2e/result-cache-package-update/logger/src/Logger.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Test\Logger;

class Logger
{

public function info(string $message): void
{
}

}
4 changes: 2 additions & 2 deletions e2e/result-cache-package-update/src/Foo.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace ResultCachePackageUpdateE2E;

use Psr\Log\LoggerInterface;
use Test\Logger\Logger;

class Foo
{

public function __construct(private LoggerInterface $logger)
public function __construct(private Logger $logger)
{
}

Expand Down
5 changes: 5 additions & 0 deletions e2e/result-cache-package-update/updatePackage.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
--- a/logger/composer.json
+++ b/logger/composer.json
@@ -1 +1 @@
-{ "name": "test/logger", "version": "1.0.0", "autoload": { "classmap": ["src"] } }
+{ "name": "test/logger", "version": "2.0.0", "autoload": { "classmap": ["src"] } }
Loading