2013-01-15 16 views
5

mio cpanTAP::Formatter::HTML installazione si blocca a 01_basic.t e io non sono sicuro perché:edificio Problemi TAP :: :: Formatter HTML su Windows

CPAN.pm: Going to build S/SP/SPURKIS/TAP-Formatter-HTML-0.09.tar.gz 

# running Build.PL --installdirs site 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Created MYMETA.yml and MYMETA.json 
Creating new 'Build' script for 'TAP-Formatter-HTML' version '0.09' 
C:\Perl\bin\perl.exe Build --makefile_env_macros 1 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Building TAP-Formatter-HTML 
    SPURKIS/TAP-Formatter-HTML-0.09.tar.gz 
    C:\Perl\site\bin\dmake.exe -- OK 
CPAN: YAML::XS loaded ok (v0.35) 
Running make test 
C:\Perl\bin\perl.exe Build --makefile_env_macros 1 test 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
Set up gcc environment - 3.4.5 (mingw-vista special r3) 
t\01_basic.t ............... 1/? Caught SIGINT. Trying to quit ... 
Terminating on signal SIGINT(2) 
Terminating on signal SIGINT(2) 
Terminate batch job (Y/N)? Y 

per capire meglio la causa principale di questo, ho modificato il test per includere alcuni print s e corse autonomo:

use strict; 
use warnings; 

$|++; 

use lib 'lib'; 
use lib 't/lib'; 
use feature 'say'; 

use Test::More 'no_plan'; 
use FileTempTFH; 
use File::Basename qw(basename); 

use TAP::Harness; 
use_ok('TAP::Formatter::HTML'); 

my $stdout_fh  = FileTempTFH->new; 
say "Defined FileTempTFH object"; 

my $stdout_orig_fh = IO::File->new_from_fd(fileno(STDOUT), 'w') 
    or die "Error opening STDOUT for writing: $!"; 
say "Defined IO::File object"; 

STDOUT->fdopen(fileno($stdout_fh), 'w') 
    or die "Error redirecting STDOUT: $!"; 
say "Opened STDOUT"; 

my @tests = glob('t/data/*.pl'); 
say "Tests defined : @tests"; 

my $h = TAP::Harness->new({ merge => 1, 
          formatter_class => 'TAP::Formatter::HTML' }); 
$h->runtests(@tests); 
say "Tests run"; 

STDOUT->fdopen(fileno($stdout_orig_fh), 'w') 
    or die "Error resetting STDOUT: $!"; 

my $stdout = $stdout_fh->get_all_output || ''; 
isnt($stdout, '', 'captured test output to stdout'); 

foreach my $file (@tests) { 
    my $test = basename($file); 
    $test =~ s/\.pl$//; 
    ok($stdout =~ qr|$test|, "output contains test '$test'"); 
} 

Questo blocca anche:

C:\Perl\cpan\sources\authors\id\S\SP\SPURKIS\TAP-Formatter-HTML-0.09>perl t\01_basic.t 
ok 1 - use TAP::Formatter::HTML; 
Defined FileTempTFH object 
Defined IO::File object 

Sembra che la dichiarazione che si blocca sia STDOUT->fdopen(fileno($stdout_fh), 'w').

Perché questo accade comunque, e come posso installare il modulo sul mio setup?


PS, il contenuto di FileTempTFH:

package FileTempTFH; 

use strict; 
use warnings; 

use Fcntl qw(SEEK_SET); 

use base qw(File::Temp); 

sub get_all_output { 
    my $self = shift; 
    $self->seek(0, SEEK_SET); 
    my $html; 
    { 
    local $/ = undef; 
    $html = <$self>; 
    } 
    return $html; 
} 

1; 

miei perl -V dettagli:

Set up gcc environment - 3.4.5 (mingw-vista special r3) Summary of my perl5 (revision 5 version 14 subversion 2) configuration: 

    Platform: 
    osname=MSWin32, osvers=5.2, archname=MSWin32-x86-multi-thread 
    uname='' 
    config_args='undef' 
    hint=recommended, useposix=true, d_sigaction=undef 
    useithreads=define, usemultiplicity=define 
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef 
    use64bitint=undef, use64bitall=undef, uselongdouble=undef 
    usemymalloc=n, bincompat5005=undef Compiler: 
    cc='C:/Perl/site/bin/gcc.exe', ccflags ='-DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTE XT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D_USE_32BIT_TIME_T -DHASATTRIBUTE -fno-strict-aliasing -mms-bitfields', 
    optimize='-O2', 
    cppflags='-DWIN32' 
    ccversion='', gccversion='3.4.5 (mingw-vista special r3)', gccosandvers='' 
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 
    d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8 
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksize=8 
    alignbytes=8, prototype=define Linker and Libraries: 
    ld='C:\Perl\site\bin\g++.exe', ldflags ='-L"C:\Perl\lib\CORE"' 
    libpth=\lib 
    libs=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion 
-lodbc32 -lodbccp32 -lcomctl32 -lmsvcrt 
    perllibs=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lvers ion -lodbc32 -lodbccp32 -lcomctl32 -lmsvcrt 
    libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl514.lib 
    gnulibc_version='' Dynamic Linking: 
    dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' 
    cccdlflags=' ', lddlflags='-mdll -L"C:\Perl\lib\CORE"' 


Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV 
         PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS 
         PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PL_OP_SLAB_ALLOC 
         USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF 
         USE_SITECUSTOMIZE Locally applied patches: 
     ActivePerl Build 1402 [295342] Built under MSWin32 Compiled at Oct 7 2011 15:49:44 @INC: 
    C:/Perl/site/lib 
    C:/Perl/lib 
    . 
+0

assomiglia a questo è stato segnalato a dicembre: https://rt.cpan.org/Public/ Bug/Display.html? Id = 81922 –

+0

Quale versione e distribuzione di perl stai usando? – Ilion

+0

@llion: dettagli aggiunti. – Zaid

risposta

2

provare una più recente, dal biglietto RT sembra essere risolto nella corrente versione:

"I've worke d intorno al problema in v0.11. "

Poiché solo i test non riescono, è possibile forzare l'installazione. Test:

http://howto.eyeoncomputers.com/programming/cpan-force-install/

fforce install TAP::Formatter::HTML 

oppure con cpanm

cpanm --notest TAP::Formatter::HTML 

saluti,