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
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