Mik*_*eds 4 tdd perl command-line tap
我试图在Windows 7上使用带有活动状态Perl的prove/TAP :: Harness获得颜色(颜色)输出.
实际测试运行良好,只是没有颜色输出.
使用Strawberry Perl和WinXP我遇到了类似的问题.
我无法使用*nix和cygwin或其他第三方xterm,它们都会对输出进行着色.
我知道这有点挑剔,但我想我已经沉迷于"绿色":-)
有一个简单的解决方案吗? - 在Activate状态站点上看不到任何内容 - 我正在考虑提出错误.有关调试或检查的任何指导?
是否值得编写自己的格式化程序?
在此先感谢您的帮助.
尝试安装模块和方法的更多细节......
这些都是根据我的知识安装的
Win32::Console::ANSI;
Term::ANSIColor;
Run Code Online (Sandbox Code Playgroud)
此测试脚本有效:
#!/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");
Run Code Online (Sandbox Code Playgroud)
我试过了:
prove
prove -c
Run Code Online (Sandbox Code Playgroud)
并使用以下测试工具程序有和没有格式化程序但我在假设颜色默认情况下打开.
#!/usr/bin/perl
use strict;
use warnings;
use TAP::Harness;
my @tests = glob( 't/*.t' );
my $harness = TAP::Harness->new();
$harness->runtests( @tests );
Run Code Online (Sandbox Code Playgroud)
我还安装了HTML格式化程序,似乎正在运行.
prove --formatter=TAP::Formatter::HTML
Run Code Online (Sandbox Code Playgroud)
运行:
prove --formatter=TAP::Formatter::Color
Run Code Online (Sandbox Code Playgroud)
Gives无法通过x:/Perl/site/lib/TAP/Harness.pm第679行的"TAP :: Formatter :: Color"包找到对象方法"verbosity".
谢谢迈克
它似乎是TAP :: Formatter :: Color中的错误1.它附加到控制台的STDOUT句柄,但应该着色的消息在STDERR上.
这个:
my $console = Win32::Console->new( STD_OUTPUT_HANDLE() );
Run Code Online (Sandbox Code Playgroud)
应该是这样:
my $console = Win32::Console->new( STD_ERROR_HANDLE() );
Run Code Online (Sandbox Code Playgroud)
此外,尽管文档说,--color不是Windows上的默认设置.App :: Prove(这是"证明"可执行文件的背后)显式地将Windows的默认值设置为false:
sub _color_default {
my $self = shift;
return -t STDOUT && !$ENV{HARNESS_NOTTY} && !IS_WIN32;
}
Run Code Online (Sandbox Code Playgroud)