Perl Prove TAP::Harness color (color) 输出 windows (win32)

标签 perl command-line tdd tap

我正在尝试在 Windows 7 上使用带有事件状态 Perl 的证明/TAP::Harness 获取颜色(颜色)输出。

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

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

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

我知道它有点挑剔,但我想我已经对“绿色”上瘾了:-)

有简单的解决方法吗? - 在激活状态网站上看不到任何东西 - 我正在考虑提出一个错误。
有关调试或检查什么的任何指导?

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

在此先感谢您的帮助。

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

这些已安装并且据我所知正在工作

   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”。

谢谢
麦克风

最佳答案

它似乎是 TAP::Formatter::Color 中的 bug1。它附加到控制台的 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 中的BUG

关于Perl Prove TAP::Harness color (color) 输出 windows (win32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18249108/

相关文章:

Perl soap::lite 和复杂数据

c++ - 在C++中,编译-std = c++ 0x需要什么?

unit-testing - QUnit 与 Jasmine?

visual-studio - 检测 Visual Studio Test 是否正在运行

Clojure.spec:如何规范对随机变化敏感的数据结构?

windows - 在 Perl 窗口中删除大量文本后如何添加新行?

Perl File::Find::Rule 从数组中排除目录

java - 如何在 Windows 上创建一个 jar 文件?

multithreading - 哪些 perl 内置函数是原子的?

.net - 如何从 Visual Studio 命令提示符以外的命令行运行 regasm.exe?