2013-08-15 3 views
4

Я пытаюсь получить цвет (цвет) выход, используя доказать/TAP :: Harness с активной государственной Perl на Windows 7.Perl Докажи TAP :: цвет Harness (цвет) выход для окон (win32)

The фактические тесты выполняются нормально, а именно, что цветной выход отсутствует.

Я получаю аналогичную проблему, используя Strawberry Perl и WinXP.

Я не могу использовать * nix и cygwin или другие третьи стороны xterm, оба из которых делают цвет вывода.

Я знаю его немного разборчивы вещь, но я думаю, что я пристрастился к «зеленым» :-)

Есть ли простое решение проблемы? - не мог ничего видеть на сайте Activate state - я думал о том, чтобы поднять ошибку. Любые инструкции по отладке или что проверить?

Стоит ли писать собственный форматировщик?

Заранее за вашу помощь.

Более подробно об установленных модулях и подходах пытались ...

Они устанавливаются и в меру моих знаний работающих

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"); 

I попробовали:

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 

Дает Не удается найти метод объекта "многословие" с помощью пакета "TAP :: Formatter :: Цвет" в точке х:/Perl/сайта/Библиотека/TAP/Harness.pm линия 679.

Благодаря Майк

+1

Связанный: http://p3rl.org/App::Prove::Plugin::Pretty – daxim

ответ

5

Это, кажется, ошибка в TAP :: Formatter :: Color. Он прикрепляется к десктопу STDOUT консоли, но сообщения, которые должны быть окрашены, находятся на STDERR.

Это:

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

Должно быть вместо этого:

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

Кроме того, несмотря на то, что сказано в документации, --color не по умолчанию в Windows.App :: Докажите (что это за «доказать» исполняемый файл) явно устанавливает значение по умолчанию для ложно для Windows:

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

Похоже, что связанный отчет об ошибке был [# 71850] (https://rt.cpan.org/Public/Bug/Display.html?id=71850) в RT для теста :: Harness. –

Смежные вопросы