A circular symbolic link is created by `@php vendor/bin/testbench package:discover --ansi`
ngmy opened this issue · 6 comments
- Testbench Version: 8.5.9
- Laravel Version: 10.14.1
- PHP Version: 8.1.20
- Database Driver & Version:
Description:
After running vendor/bin/testbench package:discover --ansi
, a circular symbolic link to the project root vendor
in vendor/orchestra/testbench-core/laravel/vendor
was created.
/var/www$ ls -lA vendor/orchestra/testbench-core/laravel/vendor
lrwxrwxrwx 1 app app 15 Jun 29 2023 vendor/orchestra/testbench-core/laravel/vendor -> /var/www/vendor
Running larastan in this state may result in a Too many levels of symbolic links
error.
This error is not always the case, but it occurs frequently on GitHub Actions.
Below is the error when it occurs on GitHub Actions:
Run composer lint
> @php vendor/bin/phpstan clear-result-cache || exit $?
Note: Using configuration file /home/runner/work/laravel-job-response/laravel-job-response/phpstan.neon.dist.
In RecursiveDirectoryIterator.php line 109:
RecursiveDirectoryIterator::__construct(/home/runner/work/laravel-job-respo
nse/laravel-job-response/vendor/orchestra/testbench-core/laravel/vendor/orc
hestra/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/vendo
r/orchestra/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/
vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbench-core/lar
avel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbench-cor
e/laravel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbenc
h-core/laravel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/tes
tbench-core/laravel/vendor/orchestra/testbench-core/laravel/vendor/orchestr
a/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/vendor/orc
hestra/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/vendo
r/orchestra/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/
vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbench-core/lar
avel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbench-cor
e/laravel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbenc
h-core/laravel/vendor/nesbot/carbon/src/Carbon/Laravel): Failed to open dir
ectory: Too many levels of symbolic links
In RecursiveDirectoryIterator.php line [4](https://github.com/ngmy/laravel-job-response/actions/runs/5379423165/jobs/9760624029#step:7:5)2:
RecursiveDirectoryIterator::__construct(/home/runner/work/laravel-job-respo
nse/laravel-job-response/vendor/orchestra/testbench-core/laravel/vendor/orc
hestra/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/vendo
r/orchestra/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/
vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbench-core/lar
avel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbench-cor
e/laravel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbenc
h-core/laravel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/tes
tbench-core/laravel/vendor/orchestra/testbench-core/laravel/vendor/orchestr
a/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/vendor/orc
hestra/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/vendo
r/orchestra/testbench-core/laravel/vendor/orchestra/testbench-core/laravel/
vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbench-core/lar
avel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbench-cor
e/laravel/vendor/orchestra/testbench-core/laravel/vendor/orchestra/testbenc
h-core/laravel/vendor/nesbot/carbon/src/Carbon/Laravel): Failed to open dir
ectory: Too many levels of symbolic links
clear-result-cache [-c|--configuration CONFIGURATION] [-a|--autoload-file AUTOLOAD-FILE] [--debug] [--memory-limit MEMORY-LIMIT]
Script @php vendor/bin/phpstan clear-result-cache || exit $? handling the lint event returned with error code 1
Error: Process completed with exit code 1.
Steps To Reproduce:
Run composer install
with the following composer.json
:
{
"name": "foo/bar",
"require-dev": {
"orchestra/testbench": "^8.0"
},
"scripts": {
"post-autoload-dump": [
"@php vendor/bin/testbench package:discover --ansi"
]
}
}
A circular symbolic link is created:
ls -lA vendor/orchestra/testbench-core/laravel/vendor
If @php vendor/bin/testbench package:discover --ansi
was removed from the scripts
, it was not created.
Requires reproducing repositories. I have many projects with Testbench and Larastan without seeing any of this issue.
You should simplify your configuration file:
paths:
- *
- .php-cs-fixer.dist.php
excludePaths:
- vendor
- vendor-bin
to
paths:
- config
- src
- tests
- .php-cs-fixer.dist.php
Okay, it seems that specifying .
in the paths
is not recommended.
phpstan/phpstan#9554
PHPMD is also falling foul of this issue.
I have tried adding <exclude-pattern>*orchestra*</exclude-pattern>
to my ruleset, but I still get an recursive directory error.
Failed to open directory: Too many levels of symbolic links