首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试拉请求

测试拉请求
EN

Stack Overflow用户
提问于 2019-10-15 08:53:04
回答 1查看 161关注 0票数 1

最近,我在一个包中发现了一个漏洞,我喜欢在Laravel项目中使用这个漏洞。这个包是Laravel:https://github.com/ARCANEDEV/LogViewer的日志查看器。

我提出了一个关于漏洞的问题,业主说,我可以提出一个拉请求,试图纠正这个问题,我觉得我至少可以尝试。

我的问题是:是否有一种方法在测试环境中使用这个包的版本和我的拉请求,就好像我是通过Composer安装它一样?

基本上,远离实际的单元测试,是否有方法在项目中测试运行包?

更新给出研究结果和可用答案

在搜索和阅读了大量答案之后,我尝试了以下几点:

  • 叉子回购,我想提出一个拉的要求。叉子在这里:https://github.com/blorange2/LogViewer
  • 将此分叉回购复制到我的本地机器上,并切换到与我当前版本的Laravel兼容的分支( Laravel 5.6为v4.5 )。
  • 更新本地项目中的composer.json,使其具有一个repositories数组
代码语言:javascript
复制
  "repositories": [
    {
      "type": "path",
      "url": "../forks/LogViewer"
    }
  ],

整件事都是这样的:

代码语言:javascript
复制
{
  "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",

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-15 13:10:26

当您想要像使用原始包一样在项目中使用库的自定义版本时,可以修改composer.json。

为了本地开发,您可以将自定义包源(又名存储库)添加到composer.json中,我更喜欢路径存储库

代码语言:javascript
复制
{
    "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下载包,以确保它在客户端项目中正确可用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58390783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档