之前我试了单独执行t/more.t,不过都没有成功。输出如下:

        # /usr/perl5/5.8.4/bin/perl t/more.t
        1..25
        not ok 1 - require ExtUtils::ParseXS;
        #   Failed test 'require ExtUtils::ParseXS;'
        #   at t/more.t line 15.
        #     Tried to require 'ExtUtils::ParseXS'.
        #     Error:  Can't locate ExtUtils/ParseXS.pm in @INC (@INC contains: 
/usr/perl5/5.8.4/lib/sun4-solaris-64int /usr/perl5/5.8.4/lib 
/usr/perl5/site_perl/5.8.4/sun4-solaris-64int /usr/perl5/site_perl/5.8.4 
/usr/perl5/site_perl /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int 
/usr/perl5/vendor_perl/5.8.4 /usr/perl5/vendor_perl .) at (eval 8) line 2.
        Can't locate object method "process_file" via package 
"ExtUtils::ParseXS" at t/more.t line 27.
        # Looks like you planned 25 tests but ran 1.
        # Looks like you failed 1 test of 1 run.
        # Looks like your test exited with 255 just after 1.
        # /usr/perl5/5.8.4/bin/perl "-MExtUtils::Command::MM" t/more.t
        1..25
        not ok 1 - require ExtUtils::ParseXS;
        #   Failed test 'require ExtUtils::ParseXS;'
        #   at t/more.t line 15.
        #     Tried to require 'ExtUtils::ParseXS'.
        #     Error:  Can't locate ExtUtils/ParseXS.pm in @INC (@INC contains: 
/usr/perl5/5.8.4/lib/sun4-solaris-64int /usr/perl5/5.8.4/lib 
/usr/perl5/site_perl/5.8.4/sun4-solaris-64int /usr/perl5/site_perl/5.8.4 
/usr/perl5/site_perl /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int 
/usr/perl5/vendor_perl/5.8.4 /usr/perl5/vendor_perl .) at (eval 8) line 2.
        Can't locate object method "process_file" via package 
"ExtUtils::ParseXS" at t/more.t line 27.
        # Looks like you planned 25 tests but ran 1.
        # Looks like you failed 1 test of 1 run.
        # Looks like your test exited with 255 just after 1.

而且说实话我数了半天,都没数全25个用例。这个测试是fail在了第十个用例还是第一个用例呢?
 
# cat -n more.t|egrep 'ok | is'
    31  ok -e $source_file, "Create an output file";
    40    ok $obj_file;
    41    ok -e $obj_file, "Make sure $obj_file exists";
    49    ok $lib_file;
    50    ok -e $lib_file,  "Make sure $lib_file exists";
    60    is $@, '';
    61    is ExtUtils::ParseXS::errors(), 0, 'ExtUtils::ParseXS::errors()';
    63    is $XSMore::boot_ok, 100, 'the BOOT keyword';
    65    ok XSMore::include_ok(), 'the INCLUDE keyword';
    66    is prototype(\&XSMore::include_ok), "", 'the PROTOTYPES keyword';
    68    is prototype(\&XSMore::prototype_ssa), '$$@' <BLOCKED::mailto:'$$@'> 
, 'the PROTOTYPE keyword';
    70    is_deeply [attributes::get(\&XSMore::attr_method)], [qw(method)], 
'the ATTRS keyword';
    71    is prototype(\&XSMore::attr_method), '$;@', 'ATTRS with prototype';
    73    is XSMore::return_1(), 1, 'the CASE keyword (1)';
    74    is XSMore::return_2(), 2, 'the CASE keyword (2)';
    75    is prototype(\&XSMore::return_1), "", 'ALIAS with prototype (1)';
    76    is prototype(\&XSMore::return_2), "", 'ALIAS with prototype (2)';
    78    is XSMore::arg_init(200), 200, 'argument init';
    80    ok overload::Overloaded(XSMore->new), 'the FALLBACK keyword';
    81    is abs(XSMore->new), 42, 'the OVERLOAD keyword';
    85    is_deeply \...@a, [qw(INIT CODE POSTCALL CLEANUP)], 'the INIT & 
POSTCALL & CLEANUP keywords';
    87    is_deeply [XSMore::outlist()], [ord('a'), ord('b')], 'the OUTLIST 
keyword';
    89    is XSMore::len("foo"), 3, 'the length keyword';
    91    is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive';
#  cat -n more.t|egrep 'ok | is'|wc -l
      24


________________________________

        From: [email protected] [mailto:[email protected]] On 
Behalf Of woosley. xu.
        Sent: 2010年9月14日 10:00
        To: [email protected]
        Subject: Re: [PerlChina] 安装Log-Dispatch-2.26模块 make test出错
        
        
        直接perl t/more.t
        不要用test_harness了
        test_harness打印的是测试结果的统计信息,
        
        不过我这边solaris测试是通过的
        
        r...@seaserver0:/.cpan/build/ExtUtils-ParseXS-2.2206-BLvSpp>perl 
t/more.t
        1..25
        ok 1 - require ExtUtils::ParseXS;
        ok 2 - Create an output file
        /opt/studio/SOS11/SUNWspro/bin/cc -I/opt/csw/lib/perl/5.10.1/CORE -KPIC 
-c -D_RE
        ENTRANT -xO3 -xarch=v8 -I/opt/csw/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BIT
        S=64 -xO3 -xarch=v8 -o XSMore.o XSMore.c
        ok 3
        ok 4 - Make sure XSMore.o exists
        /opt/studio/SOS11/SUNWspro/bin/cc -G -L/opt/csw/lib/libperl.so 
-L/opt/csw/lib -L
        /opt/csw/bdb47/lib -L/usr/lib -L/usr/ccs/lib -L/lib -o XSMore.so 
XSMore.o
        ok 5
        ok 6 - Make sure XSMore.so exists
        ok 7
        ok 8 - ExtUtils::ParseXS::errors()
        ok 9 - the BOOT keyword
        ok 10 - the INCLUDE keyword
        ok 11 - the PROTOTYPES keyword
        ok 12 - the PROTOTYPE keyword
        ok 13 - the ATTRS keyword
        ok 14 - ATTRS with prototype
        ok 15 - the CASE keyword (1)
        .........
        
        在 2010年9月14日 上午9:44,ZHANG Jiaqiang A 
<[email protected]>写道:
        

                不好意思,这封信似乎有点长,我以前从来没有debug过make test。
                 
                如何查看出错的用例是哪一个呢?刚才我执行了一下more.t,屏幕的输出和原来的一致。
                 
                # /usr/perl5/5.8.4/bin/perl "-MExtUtils::Command::MM" "-e" 
"test_harness(0, 'blib/lib', 'blib/arch')" t/more.t 

                t/more.t .. 1/25 # Looks like you planned 25 tests but ran 10.
                t/more.t .. Dubious, test returned 255 (wstat 65280, 0xff00)
                Failed 15/25 subtests
                        (less 8 skipped subtests: 2 okay)
                 
                
                Test Summary Report
                -------------------
                t/more.t (Wstat: 65280 Tests: 10 Failed: 0)
                  Non-zero exit status: 255
                  Parse errors: Bad plan.  You planned 25 tests but ran 10.
                
                Files=1, Tests=10,  1 wallclock secs ( 0.09 usr  0.01 sys +  
0.40 cusr  0.04 csys =  0.54 CPU)
                Result: FAIL
                Failed 1/1 test programs. 0/10 subtests failed.
                
                # cat -n more.t
                     1  #!/usr/bin/perl
                     2
                     3  use strict;
                     4  use Test::More;
                     5  use Config;
                     6  use DynaLoader;
                     7  use ExtUtils::CBuilder;
                     8  use attributes;
                     9  use overload;
                    10
                    11  plan tests => 25;
                    12
                    13  my ($source_file, $obj_file, $lib_file);
                    14
                    15  require_ok( 'ExtUtils::ParseXS' );
                    16  ExtUtils::ParseXS->import('process_file');
                    17
                    18  chdir 't' or die "Can't chdir to t/, $!";
                    19
                    20  use Carp; $SIG{__WARN__} = \&Carp::cluck;
                    21
                    22  #########################
                    23
                    24  $source_file = 'XSMore.c';
                    25
                    26  # Try sending to file
                    27  ExtUtils::ParseXS->process_file(
                    28          filename => 'XSMore.xs',
                    29          output   => $source_file,
                    30  );
                    31  ok -e $source_file, "Create an output file";
                    32
                    33  my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
                    34  my $b = ExtUtils::CBuilder->new(quiet => $quiet);
                    35
                    36  SKIP: {
                    37    skip "no compiler available", 2
                    38      if ! $b->have_compiler;
                    39    $obj_file = $b->compile( source => $source_file );
                    40    ok $obj_file;
                    41    ok -e $obj_file, "Make sure $obj_file exists";
                    42  }
                    43
                    44  SKIP: {
                    45    skip "no dynamic loading", 6
                    46      if !$b->have_compiler || !$Config{usedl};
                    47    my $module = 'XSMore';
                    48    $lib_file = $b->link( objects => $obj_file, 
module_name => $module );
                    49    ok $lib_file;
                    50    ok -e $lib_file,  "Make sure $lib_file exists";
                    51
                    52    eval{
                    53      package XSMore;
                    54      our $VERSION = 42;
                    55      our $boot_ok;
                    56      DynaLoader::bootstrap_inherit(__PACKAGE__, 
$VERSION); # VERSIONCHECK disabled
                    57
                    58      sub new{ bless {}, shift }
                    59    };
                    60    is $@, '';
                    61    is ExtUtils::ParseXS::errors(), 0, 
'ExtUtils::ParseXS::errors()';
                    62
                    63    is $XSMore::boot_ok, 100, 'the BOOT keyword';
                    64
                    65    ok XSMore::include_ok(), 'the INCLUDE keyword';
                    66    is prototype(\&XSMore::include_ok), "", 'the 
PROTOTYPES keyword';
                    67
                    68    is prototype(\&XSMore::prototype_ssa), '$$@' 
<mailto:%2...@%27> , 'the PROTOTYPE keyword';
                    69
                    70    is_deeply [attributes::get(\&XSMore::attr_method)], 
[qw(method)], 'the ATTRS keyword';
                    71    is prototype(\&XSMore::attr_method), '$;@', 'ATTRS 
with prototype';
                    72
                    73    is XSMore::return_1(), 1, 'the CASE keyword (1)';
                    74    is XSMore::return_2(), 2, 'the CASE keyword (2)';
                    75    is prototype(\&XSMore::return_1), "", 'ALIAS with 
prototype (1)';
                    76    is prototype(\&XSMore::return_2), "", 'ALIAS with 
prototype (2)';
                    77
                    78    is XSMore::arg_init(200), 200, 'argument init';
                    79
                    80    ok overload::Overloaded(XSMore->new), 'the FALLBACK 
keyword';
                    81    is abs(XSMore->new), 42, 'the OVERLOAD keyword';
                    82
                    83    my @a;
                    84    XSMore::hook(\...@a);
                    85    is_deeply \...@a, [qw(INIT CODE POSTCALL CLEANUP)], 
'the INIT & POSTCALL & CLEANUP keywords';
                    86
                    87    is_deeply [XSMore::outlist()], [ord('a'), ord('b')], 
'the OUTLIST keyword';
                    88
                    89    is XSMore::len("foo"), 3, 'the length keyword';
                    90
                    91    is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND 
directive';
                    92
                    93    # Win32 needs to close the DLL before it can unlink 
it, but unfortunately
                    94    # dl_unload_file was missing on Win32 prior to perl 
change #24679!
                    95    if ($^O eq 'MSWin32' and defined 
&DynaLoader::dl_unload_file) {
                    96      for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) 
{
                    97        if ($DynaLoader::dl_modules[$i] eq $module) {
                    98          
DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
                    99          last;
                   100        }
                   101      }
                   102    }
                   103  }
                   104
                   105  unless ($ENV{PERL_NO_CLEANUP}) {
                   106    for ( $obj_file, $lib_file, $source_file) {
                   107      next unless defined $_;
                   108      1 while unlink $_;
                   109    }
                   110  }
                

________________________________

                        From: [email protected] 
[mailto:[email protected]] On Behalf Of woosley. xu.
                        Sent: 2010年9月14日 9:26 

                        To: [email protected]
                        Subject: Re: [PerlChina] 安装Log-Dispatch-2.26模块 make 
test出错
                        

                        perl t/more.t 找出出错原因并fix,
                        或者直接跳过make test
                        
                        
                        在 2010年9月13日 下午8:49,ZHANG Jiaqiang A 
<[email protected]>写道:
                        

                                大家好,
                                 
                                求高手给出出主意
                                 
                                
我想安装Log-Dispatch-2.26,然后被告知缺少Params::Validate,安装Params-Validate-0.95,缺少Module::Build,安装Module-Build-0.3607,被告知缺少ExtUtils::ParseXS,安装ExtUtils-ParseXS-2.2206,make
 test的时候出错。
                                 
                                
                                这是台机房里的Solaris 
server,无法上网。只能把各个软件从CPAN上下载了,1)perlgcc Makefile.PL 2)make 3)make test 4) make 
install。

                                        # make test
                                        PERL_DL_NONLAZY=1 
/usr/perl5/5.8.4/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 
'blib/lib', 'blib/arch')" t/*.t
                                        t/basic.t .. ok
                                        t/more.t ... 1/25 # Looks like you 
planned 25 tests but ran 10.
                                        t/more.t ... Dubious, test returned 255 
(wstat 65280, 0xff00)
                                        Failed 15/25 subtests
                                                (less 8 skipped subtests: 2 
okay)
                                        t/usage.t .. ok
                                         
                                        Test Summary Report
                                        -------------------
                                        t/more.t (Wstat: 65280 Tests: 10 
Failed: 0)
                                          Non-zero exit status: 255
                                          Parse errors: Bad plan.  You planned 
25 tests but ran 10.
                                        Files=3, Tests=44,  2 wallclock secs ( 
0.12 usr  0.03 sys +  1.20 cusr  0.12 csys =  1.47 CPU)
                                        Result: FAIL
                                        Failed 1/3 test programs. 0/44 subtests 
failed.
                                        *** Error code 29
                                        make: Fatal error: Command failed for 
target `test_dynamic'

                                 
                                

                                -- 
                                您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 
讨论组”论坛。
                                要向此网上论坛发帖,请发送电子邮件至 [email protected]。
                                要取消订阅此网上论坛,请发送电子邮件至 
[email protected] 
<mailto:perlchina%[email protected]> 。
                                若有更多问题,请通过 
http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
                                




                        -- 
                        Woosley.Xu
                        
                        
                        
                        

                        

                        -- 
                        您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
                        要向此网上论坛发帖,请发送电子邮件至 [email protected]。
                        要取消订阅此网上论坛,请发送电子邮件至 
[email protected] 
<mailto:perlchina%[email protected]> 。
                        若有更多问题,请通过 
http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
                        

                

                -- 
                您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
                要向此网上论坛发帖,请发送电子邮件至 [email protected]。
                要取消订阅此网上论坛,请发送电子邮件至 [email protected] 
<mailto:perlchina%[email protected]> 。
                若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 
访问此网上论坛。
                




        -- 
        Woosley.Xu
        
        
        
        

        

        -- 
        您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
        要向此网上论坛发帖,请发送电子邮件至 [email protected]。
        要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
        若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
        

-- 
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 [email protected]。
要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

回复