我正在为现有项目编写 Perl t/*.t 测试。在开发过程中,我想使用“证明”在模块目录层次结构中的任意深度运行选择测试。我创建了一些与我想测试的 *.pm 文件深度相同的 t/ 目录。不幸的是,项目代码基础的 lib/ 不在 @INC 中。
自动检测和添加@INC 路径的最佳方法是什么?我已经查看了 -b 选项来证明和 blib 一般,但它们似乎不起作用(他们采用 pwd 并将 blib/lib 附加到它并将其添加到@INC)。理想情况下,该解决方案不需要环境变量或安装模块,并且可以容纳相同代码的多个工作副本。
我的方法错了吗?我有什么明显的遗漏吗?CPAN 模块似乎通过安装或复制 *.t 文件顶部的代码块来解决这个问题(恶心)。
编辑:
结构如下:
/home/user/proj/branch\_foo/lib/First/Second/Third.pm
/home/user/proj/branch\_foo/lib/First/Second/t/third.t
这有效:
~/proj/branch\_foo/lib/First/Second$ prove -I../..
但我想:
~/proj/branch\_foo/lib/First/Second$ prove -r
或者:
~/proj/branch\_foo/lib/First/Second$ prove t/third.t
所以我可以这样做:
~/proj/branch\_foo/lib$ prove -r
代替:
~/proj/branch\_foo/lib$ prove -I. -r
也许我只需要使用-I
和处理它。