首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TAP::Harness perl测试tee输出

TAP::Harness perl测试tee输出
EN

Stack Overflow用户
提问于 2011-02-24 06:03:21
回答 1查看 867关注 0票数 2

我使用TAP::Harness运行我的测试,当我在Linux系统上从命令行运行测试时,我在STDOUT上得到测试结果,但当我尝试使用perl harness.pl | tee out.tap将输出捕获到文件和STDOUT时,结果被缓冲并仅在最后显示,我尝试将一个文件句柄传递给new,但结果在写入文件之前仍然被缓冲,有没有一种方法不缓冲输出,我有一个长时间运行的套件,希望在测试运行时查看结果并捕获输出。

TAP::Harness版本3.22和perl版本5.8.8

以下是示例代码harness.pl

代码语言:javascript
复制
#!/usr/bin/perl
use strict;
use warnings;
use TAP::Harness;
$|++;

my @tests = ('del.t',);


my $harness = TAP::Harness->new( {
    verbosity => 1,
 } );
$harness->runtests(@tests);

和测试del.t

代码语言:javascript
复制
use Test::More qw /no_plan/;
$|++;

my $count =1;
for (1 ..20 ) {
   ok ( $count ++ == $_, "Pass  $_");
   sleep 1 if ( $count % 5 == 0 ) ;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-24 06:10:27

使用script而不是tee可以实现您想要的功能:

代码语言:javascript
复制
script -c 'perl harness.pl' file

我发现了一个让tee也能工作的简单更改:指定一个formatter_class

代码语言:javascript
复制
my $harness = TAP::Harness->new( {
    verbosity => 1,
    formatter_class => 'TAP::Formatter::Console',
 } );

这是因为如果输出不是tty,TAP::Harness通常使用不同的缺省值,这就是导致您看到的缓冲的原因。

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

https://stackoverflow.com/questions/5097761

复制
相关文章

相似问题

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