我如何将 Perl 的 'prove' 与其他语言的 TAP 生产者一起使用?
How can I use Perl's 'prove' with TAP producers in other languages?
我是一名 Perl 开发人员,从事多语言项目,包括 python、node.js 和 C。幸运的是,所有这些语言都有 TAP 生产者库。例如,我可以使用 mocha
命令到 运行 Node.js 脚本并获得 TAP 输出。
但是,如何将其与 prove
工具集成?对于 perl,我通常将测试放在 t/
中,prove -vlc t/
将 运行 所有 .t 文件作为 perl 脚本放在里面。我唯一能想到的是 exec
perl .t 文件中的 mocha 命令。
我能想到的在 multi-language 项目中使用 TAP 作为通用单元测试报告格式的最直接的方法是在 t/
目录中编写一些脚本来调用 TAP-producing 单元测试驱动程序。
Mocha 有一个名为 mocha-tap-reporter 的 TAP 报告插件,从命令行调用它只是
mocha --reporter mocha-tap-reporter <directory>
这是一个示例,说明如何在一个简单的项目中进行设置
.
├── node_modules
(contents of node_modules omitted)
├── package-lock.json
├── package.json
├── t
│ └── mocha.t
└── test
└── multiply.js
在这种情况下,multiply.js
使用 assert
助手并且只有一个测试:
const assert = require('assert');
describe('multiply', function () {
it('1 * 0 = 0', function () {
assert.equal(1 * 0, 0);
});
});
mocha.t
只是 shell 包装 mocha --reporter mocha-tap-reporter test
.
#!/bin/bash
# change directory to folder containing source file
cd "$(dirname "${BASH_SOURCE[0]}")"
# go to project root
cd ..
# invoke mocha test runner with tap reporter
./node_modules/.bin/mocha \
--reporter mocha-tap-reporter \
test
然后,如果您从项目根目录 运行 prove
,您将看到:
% prove
t/mocha.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.01 sys + 0.23 cusr 0.08 csys = 0.34 CPU)
Result: PASS
也就是说,mocha-tap-reporter
插件已经三年左右没有更新了,看起来有点无人维护。不过,我认为这是 Perl 社区之外的 TAP 库的一般情况(不久前在 OCaml 项目中使用过一个)。
我是一名 Perl 开发人员,从事多语言项目,包括 python、node.js 和 C。幸运的是,所有这些语言都有 TAP 生产者库。例如,我可以使用 mocha
命令到 运行 Node.js 脚本并获得 TAP 输出。
但是,如何将其与 prove
工具集成?对于 perl,我通常将测试放在 t/
中,prove -vlc t/
将 运行 所有 .t 文件作为 perl 脚本放在里面。我唯一能想到的是 exec
perl .t 文件中的 mocha 命令。
我能想到的在 multi-language 项目中使用 TAP 作为通用单元测试报告格式的最直接的方法是在 t/
目录中编写一些脚本来调用 TAP-producing 单元测试驱动程序。
Mocha 有一个名为 mocha-tap-reporter 的 TAP 报告插件,从命令行调用它只是
mocha --reporter mocha-tap-reporter <directory>
这是一个示例,说明如何在一个简单的项目中进行设置
.
├── node_modules
(contents of node_modules omitted)
├── package-lock.json
├── package.json
├── t
│ └── mocha.t
└── test
└── multiply.js
在这种情况下,multiply.js
使用 assert
助手并且只有一个测试:
const assert = require('assert');
describe('multiply', function () {
it('1 * 0 = 0', function () {
assert.equal(1 * 0, 0);
});
});
mocha.t
只是 shell 包装 mocha --reporter mocha-tap-reporter test
.
#!/bin/bash
# change directory to folder containing source file
cd "$(dirname "${BASH_SOURCE[0]}")"
# go to project root
cd ..
# invoke mocha test runner with tap reporter
./node_modules/.bin/mocha \
--reporter mocha-tap-reporter \
test
然后,如果您从项目根目录 运行 prove
,您将看到:
% prove
t/mocha.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.01 sys + 0.23 cusr 0.08 csys = 0.34 CPU)
Result: PASS
也就是说,mocha-tap-reporter
插件已经三年左右没有更新了,看起来有点无人维护。不过,我认为这是 Perl 社区之外的 TAP 库的一般情况(不久前在 OCaml 项目中使用过一个)。