最近,我在一个包中发现了一个漏洞,我喜欢在Laravel项目中使用这个漏洞。这个包是Laravel:https://github.com/ARCANEDEV/LogViewer的日志查看器。
我提出了一个关于漏洞的问题,业主说,我可以提出一个拉请求,试图纠正这个问题,我觉得我至少可以尝试。
我的问题是:是否有一种方法在测试环境中使用这个包的版本和我的拉请求,就好像我是通过Composer安装它一样?
基本上,远离实际的单元测试,是否有方法在项目中测试运行包?
更新给出研究结果和可用答案
在搜索和阅读了大量答案之后,我尝试了以下几点:
composer.json,使其具有一个repositories数组 "repositories": [
{
"type": "path",
"url": "../forks/LogViewer"
}
],整件事都是这样的:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"type": "project",
"repositories": [
{
"type": "path",
"url": "../forks/LogViewer"
}
],
"require": {
"php": "^7.1.3",
"alexusmai/laravel-purifier": "^0.5.0",
"arcanedev/log-viewer": "^4.5",
"artesaos/laravel-linkedin": "^1.3",
"barryvdh/laravel-dompdf": "^0.8.4",
"cartalyst/tags": "6.0.*",
"cornford/googlmapper": "^2.33",
"doctrine/dbal": "^2.9",
"fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": "^6.3",
"guzzlehttp/psr7": "^1.4",
"happyr/linkedin-api-client": "^1.0",
"intervention/image": "^2.5",
"ixudra/curl": "^6.16",
"jdavidbakr/mail-tracker": "~2.1",
"laravel/framework": "5.6.*",
"laravel/scout": "^5.0",
"laravel/socialite": "^3.0",
"laravel/tinker": "^1.0",
"laravelcollective/html": "^5.6",
"laravolt/avatar": "^3.0",
"league/flysystem-sftp": "~1.0",
"maatwebsite/excel": "^3.1",
"maddhatter/laravel-fullcalendar": "^1.3",
"mews/purifier": "^2.1",
"php-http/curl-client": "^1.7",
"php-http/message": "^1.6",
"pusher/pusher-http-laravel": "^4.2",
"socialiteproviders/microsoft-graph": "^2.0",
"spatie/calendar-links": "^1.0",
"spatie/flysystem-dropbox": "^1.2",
"spatie/laravel-analytics": "^3.6",
"spatie/laravel-backup": "^5.9",
"spatie/laravel-medialibrary": "7.6.3",
"spatie/laravel-permission": "^2.12",
"teamtnt/laravel-scout-tntsearch-driver": "^3.0",
"thujohn/twitter": "^2.2",
"unisharp/laravel-filemanager": "~1.8",
"vimeo/laravel": "^5.0"
},
"require-dev": {
"barryvdh/laravel-debugbar": "^3.2",
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0"
},
"autoload": {
"files": [
"app/Helpers/Helper.php"
],
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
},
"minimum-stability": "dev",
"prefer-stable": true
}我的主要项目位于以下路径(从在Windows上运行pwd ) C:\xampp\htdocs\projects\newable\newable-intranet
克隆的、分叉的项目位于这里:C:\xampp\htdocs\projects\forks\LogViewer。
但是,运行composer update并不使用本地版本,它只使用:"arcanedev/log-viewer": "^4.5",
发布于 2019-10-15 13:10:26
当您想要像使用原始包一样在项目中使用库的自定义版本时,可以修改composer.json。
为了本地开发,您可以将自定义包源(又名存储库)添加到composer.json中,我更喜欢路径存储库
{
"repositories": [
{
"type": "path",
"url": "../LogViewer"
}
],
"require": {
"arcanedev/log-viewer": "*",
...
},
...
}因此,如果您的项目和LogView库并排位于同一个工作区目录中,这将跳到工作区目录并进入库文件夹。在那里,它将寻找一个composer.json。然后,您应该能够更新到您的自定义库,例如使用composer require arcanedev/log-viewer:"*" or by manually changing the entry as shown above and then run编写器安装。
让composer下载自定义版本有时会有点棘手,但一般来说,这应该是可行的。如果它不会“下载”您的版本,即符号链接本地文件夹,尝试删除现有的供应商文件夹并再次运行composer install。您还可以向composer install -vvv添加调试输出,以查看是否找到并使用了存储库。
较不复杂的方法是删除项目供应商/文件夹中的原始库文件夹,然后手动放置指向自定义库的符号链接。当您所做的只是库代码中的一个小错误时,这通常就足够了,但是当您更改依赖项和版本要求时,我更喜欢第一种方法,因为它基本上模拟通过composer下载包,以确保它在客户端项目中正确可用。
https://stackoverflow.com/questions/58390783
复制相似问题