Perl Prove TAP :: Windows的线束颜色(颜色)输出(win32)

时间:2013-08-15 08:40:48

标签: perl command-line tdd tap

我正试图在Windows 7上使用带有Active状态Perl的prove / TAP :: Harness来获取颜色(颜色)输出。

实际测试运行正常,只是没有颜色输出。

使用Strawberry Perl和WinXP我遇到了类似的问题。

我无法使用* nix和cygwin或其他第三方xterm 为输出着色。

我知道它有点挑剔,但我想我已经沉迷于“绿色”: - )

有简单的解决方法吗? - 在Activate状态站点上看不到任何内容 - 我正在考虑提出错误。 关于调试或检查什么的任何指导?

是否值得编写自己的格式化程序?

提前感谢您的帮助。

有关安装的模块和方法的更多详细信息......

这些已经安装并据我所知工作

   Win32::Console::ANSI;
   Term::ANSIColor;

此测试脚本有效:

   #!/usr/bin/perl
   use strict;
   use warnings;
   use Win32::Console::ANSI;
   use Term::ANSIColor;

   print "One fish\n";
   print "Two fish\n";
   print color("red"), "Red Fish\n", color("reset");
   print color("blue"), "Blue Fish\n", color("reset");

我试过了:

prove
prove -c

并使用以下带有和不带格式化程序的测试工具程序但是 我假设颜色默认处于启用状态。

#!/usr/bin/perl
use strict;
use warnings;
use TAP::Harness;

my @tests = glob( 't/*.t' );
my $harness = TAP::Harness->new();
$harness->runtests( @tests );

我还安装了HTML格式化程序,似乎正在运行。

 prove  --formatter=TAP::Formatter::HTML

运行:

prove  --formatter=TAP::Formatter::Color

给出 无法在x:/Perl/site/lib/TAP/Harness.pm第679行通过软件包“TAP :: Formatter :: Color”找到对象方法“verbosity”。

由于 麦克

1 个答案:

答案 0 :(得分:5)

它似乎是TAP :: Formatter :: Color中的一个错误 1 。它附加到控制台的STDOUT句柄,但应该着色的消息在STDERR上。

此:

my $console = Win32::Console->new( STD_OUTPUT_HANDLE() );

应改为:

my $console = Win32::Console->new( STD_ERROR_HANDLE() );

此外,尽管文档说的是,--color不是Windows的默认设置。 App :: Prove(这是“证明”可执行文件背后的内容)明确地将Windows的默认值设置为false:

sub _color_default {
    my $self = shift;
    return -t STDOUT && !$ENV{HARNESS_NOTTY} && !IS_WIN32;
}

<小时/> <子> 1。该错误已在Test::Harness v3.41

中修复