问题标签 [perl-prove]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1954 浏览

perl - Perl 单元测试中的分叉子进程停止证明;测试::线束退出

我一直在尝试使用 Perl 实用程序/模块“证明”作为某些单元测试的测试工具。单元测试比“单元”更“系统”,因为我需要分叉一些后台进程作为测试的一部分,使用以下...

但是由于某种原因,当我让我的 .t 文件启动一些额外的进程时,它会导致测试工具在所有测试完成后挂在第一个 .t 文件的末尾,而不是继续到下一个文件或退出如果只有一个。

起初我想知道这是否可能是因为我正在杀死我的子进程并让它们失效。所以我加了..

到代码。但这无济于事。事实上,在封闭式检查中,结果证明我的 perl 测试文件已经退出,现在是一个已失效的进程,它是证明包装脚本没有收获它的孩子。事实上,当我在测试脚本末尾添加 die() 调用时,我得到了......

所以我的脚本退出了,但由于某种原因,线束没有解开。

我确实确认,当我在测试失败时禁用它们时,肯定是我的子流程让它感到不安,而线束正确退出。

我在启动流程的方式上是否做错了什么,可能会以某种方式扰乱安全带?

0 投票
3 回答
276 浏览

perl - 如何轻松地将开发目录中已卸载的 Perl 模块添加到 @INC?

我正在为现有项目编写 Perl t/*.t 测试。在开发过程中,我想使用“证明”在模块目录层次结构中的任意深度运行选择测试。我创建了一些与我想测试的 *.pm 文件深度相同的 t/ 目录。不幸的是,项目代码基础的 lib/ 不在 @INC 中。

自动检测和添加@INC 路径的最佳方法是什么?我已经查看了 -b 选项来证明和 blib 一般,但它们似乎不起作用(他们采用 pwd 并将 blib/lib 附加到它并将其添加到@INC)。理想情况下,该解决方案不需要环境变量或安装模块,并且可以容纳相同代码的多个工作副本。

我的方法错了吗?我有什么明显的遗漏吗?CPAN 模块似乎通过安装或复制 *.t 文件顶部的代码块来解决这个问题(恶心)。

编辑:

结构如下:

这有效:

但我想:

或者:

所以我可以这样做:

代替:

也许我只需要使用-I和处理它。

0 投票
2 回答
184 浏览

perl - 如何使用证明在不同的服务器上运行相同的测试?

我正在使用 Perlprove测试实用程序 (TAP::Harness) 来测试我的程序。
我需要先在本地计算机上运行相同的测试,然后在远程计算机上运行。
(测试程序应分别连接到本地主机或远程主机)

如何使用证明将参数(test_server)传递给测试?我应该使用环境还是有更好的解决方案?

0 投票
1 回答
357 浏览

perl - 如果它在没有换行符的情况下写入标准输出,则测试失败

当我使用该实用程序运行 perl 测试时prove,如果被测方法包含print未被换行符终止的语句,它将失败。

这导致

如果我附加一个换行符:print "A\n";测试通过。

(请注意,如果我只是执行测试perl mytest.t而不是使用prove它通过任何一种方式)。

任何想法为什么会这样,以及如何解决它?

0 投票
1 回答
601 浏览

perl - 证明命令在 arisdottle 之后不传递参数

我正在尝试通过命令将一些参数传递给测试脚本prove。基于一些旧线程,其中选项被散列,并且我的证明man页面的内容(引用如下),在选项应该起作用之前使用 :: ,但证明仍在解析测试脚本的选项,因为它是自己的:

$prove -v t/040-unit-object-test.t :: --unit 270149 Unknown option: unit

这里是手册页的相关部分:

我尝试使用sudo以 root 身份运行该选项,但得到了同样的错误。

我正在使用 Getopt::Long 模块来获取选项,当我使用普通 old 运行测试脚本时,这些选项有效perl,但是我的 SKIP 和 TODO 块不起作用。

我宁愿不必使用--exec解决方法。

我在 Mac OS 10.6 上运行 Perl 5.10。

的输出prove -V是:

prove v2.64, using Test::Harness v3.25 and Perl v5.10.0

0 投票
2 回答
987 浏览

perl - 我如何告诉 Perl 的证明实用程序忽略某些测试?

目前我prove这样运行:

有没有办法使用正则表达式排除文件?我看不到它perldoc prove的输出或输出prove -H

0 投票
2 回答
989 浏览

perl - 如何运行 perl xt 测试?

最近,Perl 世界出现了新的伟大事物。很长一段时间,在库包中都有t包含测试的文件夹。现在多了一个xt包含作者测试的文件夹。在库安装过程中不需要这些xt测试,但它可以帮助库自动确保代码很棒。

provePerl 附带了一个运行测试的脚本。如果您 prove不带参数运行,则将执行文件夹“t”中的所有测试。如果你想同时运行txt测试你应该写:

可以将.proverc参数 ( xt t) 添加到配置文件文件中。然后,当您prove不带参数运行时,它们将从文件中获取,并执行两个文件夹中的测试。

但问题来了。如果您xt t的文件中有.proverc文件,则不能只将文件名作为参数传递给prove. 如果您说 prove t/00-load.t它将执行两个文件夹中的所有测试,因为它从配置文件中获取参数。你需要写prove --norc t/00-load.t。但这似乎很难看。

你如何运行你的xt测试?

0 投票
1 回答
229 浏览

perl - perl 用“存档不是已知的格式类型”证明错误

尝试运行 Perl 证明时,我无法运行证明,并收到以下错误:

错误:

使用的版本:TAP::Harness v3.28 和 Perl v5.8.8,操作系统 = CentOs 6.4

0 投票
1 回答
390 浏览

perl - 无法使用 --debug 选项运行 perl 证明

我尝试使用 -d 选项运行证明,但出现错误:

现在“人证明”不显示可用的 -d 开关,但http://perldoc.perl.org/5.8.8/prove.html

清楚地显示 --debug

这是文档错误还是证明问题?有没有办法,我可以使用 -debug 和证明?我在用:

0 投票
1 回答
697 浏览

performance - Perl 的证明命令输出的统计信息(usr、sys、cusr、csys 和 CPU)是什么意思?

我已经做了很多谷歌搜索,但找不到这个问题的答案。当您在测试中运行证明 ( http://perldoc.perl.org/prove.html ) 时,您会得到一些如下所示的统计信息:

usr、sys、cusr、csys 和 CPU 的数字是什么意思?