hi 这个是由于安装过程中产生在当前目录下的lib找不到,也就是当前目录下的一些目录不...@inc里面 试试 perl -Mlib=./lib,./blib/lib,./blib/arch t/more.t
在 2010年9月14日 上午10:10,ZHANG Jiaqiang A <[email protected] >写道: > 之前我试了单独执行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), > '$$@', '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), '$$@' <%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]<perlchina%[email protected]> >>> 。 >>> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >>> >> >> >> >> -- >> Woosley.Xu >> >> >> >> -- >> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> 要取消订阅此网上论坛,请发送电子邮件至 >> [email protected]<perlchina%[email protected]> >> 。 >> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >> >> -- >> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> 要取消订阅此网上论坛,请发送电子邮件至 >> [email protected]<perlchina%[email protected]> >> 。 >> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >> > > > > -- > Woosley.Xu > > > > -- > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 > 要取消订阅此网上论坛,请发送电子邮件至 > [email protected]<perlchina%[email protected]> > 。 > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 > > -- > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 > 要取消订阅此网上论坛,请发送电子邮件至 > [email protected]<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 访问此网上论坛。
