新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

ラベル テスト の投稿を表示しています。 すべての投稿を表示
ラベル テスト の投稿を表示しています。 すべての投稿を表示

2013-07-31

[Perl] 某WAFを書いていたらTravis神が激おこプンプン丸だったので原因と解決案を(若者が)探った

https://travis-ci.org/ytnobody/Voson/jobs/9679903

このTravis-jobsをみてやって欲しい。common::senseがインストールできてないらしく、全然テストどころでは無くなってしまった。

で、某仮想八王子でそんなことをのたまっていたら、若人2名が原因をさぐってくれたりした。

http://blog.papix.net/entry/2013/07/31/153544

http://moznion.hatenadiary.com/entry/2013/07/31/172410

結局のところ、Devel::Cover::Plugin::CoverallsがJSON::XSに依存しており、JSON::XSがcommon::senseに依存していたため、common::senseがぶっ壊れたタイミングでJSON::XSもD::C::P::Coverallsもぶっ壊れてしまった、という状況。

これについては先ほどD::C::P::Coverallsにpullreqを投げてみたので、きっとそのうち何かしらのアクションがあるのではないかと思っております。

[追記]

じきにcommon::senseのfix入る模様なので、すぐに元の平和が訪れるでしょう。

[翌日、追記]

早速common::sense 3.72がリリースされ、元の平和が訪れました。
これをうけ、D::C::P::Coverallsのpullreqはクローズしました。

[さらに追記]

今回の一連の流れをtokuhiromさんがまとめてくれています。

また、今回の件をきっかけに、JSON.pmのメンテナであるmakamakaさんが、JSON関連のモジュールを紹介してくれています。

2010-08-13

[Perl]Data-Model-0.00006のインストールで嘆いていたら

とあるXen環境で、Data-Model-0.00006のインストールに失敗して、原因を調べていたのですが、テストこけた箇所しか解らない状態ではまってしまいました。
「もうダメだ、とりあえずこのやるせなさを吐き出そう」と思い、つぶやいてみたところ、事態は思わぬ方向に。

ytnobody
ytnobody: Data::Modelはいんない>< t/010_core/iterator.t:76で、'empty is undef'のはずが ''を返してきてる~>< #perl7:52pm, Aug 13 from Web
Yappo
Yappo@ytnobody 環境おしえてくださいー><7:58pm, Aug 13 from Echofon
ytnobody
ytnobody@Yappo uname -r で 2.6.18-164.10.1.el5xen なCentOS5.4です;;8:02pm, Aug 13 from HootSuite
Yappo
Yappo@ytnobody あざっす!perlのバージョンとかはどうでしょう? あと cpan のです? githubのとかどうでしょ? http://github.com/yappo/p5-Data-Model8:06pm, Aug 13 from Echofon
ytnobody
ytnobody@Yappo CPANの0.00006です。githubの試してみます!ありがとうございます!8:08pm, Aug 13 from HootSuite
Yappo
Yappo@ytnobody Test::Builderが新しいとテストがこけるようです。とりあえず、そこだけこける分には問題無いと思います。あとでData::Modelの方なおしときます><8:11pm, Aug 13 from Echofon
ytnobody
ytnobody@Yappo ありがとうございます!とりあえず実務系環境なので、gitバージョンは別のXen環境で検証します!8:15pm, Aug 13 from HootSuite
Yappo
Yappo@ytnobody githubのでもTest::Simpleが0.96だと、そこのテストこけること確認しました><すいませんすいません。8:17pm, Aug 13 from Echofon
ytnobody
ytnobody@Yappo わざわざありがとうございます>< 状況把握です!8:23pm, Aug 13 from HootSuite

作者登場ですよ!ちょっくらビビりつつも、非常に困っていたので、遠慮なく環境を伝えました。
Test-Simple-0.96だとtestこけるらしいので、改めて手元の環境を確認してみると、
# perl -MTest::Simple -le 'print $Test::Simple::VERSION;'
0.96

あー、ばっちり該当してるんですね~、とりあえず報告っと。。。


ytnobody
ytnobody: 手元の環境、Test::Simple-0.96でした8:27pm, Aug 13 from HootSuite
Yappo
Yappo@ytnobody あざっす!晩飯おわってからやります><8:29pm, Aug 13 from Echofon
ytnobody
ytnobody@Yappo ありがとうございます><8:31pm, Aug 13 from HootSuite


どうやら対応してくれる模様です!感謝!><

9/9追記
Data-Model-0.00007がリリースされました!

2010-06-30

[Perl/テスト]Cache-Memcached-Fast-0.19/0.18

環境

Perl5.8.8でテスト通りませんでした。念のため、環境。
# perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
  Platform:
    osname=linux, osvers=2.6.18-53.el5, archname=x86_64-linux-thread-multi
    uname='linux builder10.centos.org 2.6.18-53.el5 #1 smp mon nov 12 02:14:55 est 2007 x86_64 x86_64 x86_64 gnulinux '
    config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Dversion=5.8.8 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Dprivlib=/usr/lib/perl5/5.8.8 -Dsitelib=/usr/lib/perl5/site_perl/5.8.8 -Dvendorlib=/usr/lib/perl5/vendor_perl/5.8.8 -Darchlib=/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi -Dsitearch=/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi -Dvendorarch=/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi -Darchname=x86_64-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.7 5.8.6 5.8.5 -Dscriptdir=/usr/bin'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=define use64bitall=define uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
    optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
    ccversion='', gccversion='4.1.2 20071124 (Red Hat 4.1.2-42)', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =''
    libpth=/usr/local/lib64 /lib64 /usr/lib64
    libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
    perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.5'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
手っ取り早く言うならば、Cent5.3の標準Perlですね。

0.19をテスト

まずは、現時点で最新バージョンである0.19から。
# cpanm Cache::Memcached::Fast
Fetching http://search.cpan.org/CPAN/authors/id/K/KR/KROKI/Cache-Memcached-Fast-0.19.tar.gz ... OK
Configuring Cache-Memcached-Fast-0.19 ... OK
Building and testing Cache-Memcached-Fast-0.19 for Cache::Memcached::Fast ... FAIL
! Installing Cache::Memcached::Fast failed. See /root/.cpanm/build.log for details.
build.logを見てみます。
# Testing Cache::Memcached::Fast 0.19, Perl 5.008008, /usr/bin/perl
t/00-load.t ....... ok
# Connected to 2 memcached servers, lowest version 1.4.5
t/01-connect.t .... ok
t/02-isa.t ........ ok
t/big_value.t ..... ok
t/commands.t ...... ok
t/key_ref.t ....... ok

#   Failed test at t/magic.t line 52.

#   Failed test at t/magic.t line 53.
# Looks like you failed 2 tests of 9.
t/magic.t ......... 
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/9 subtests 
 (less 3 skipped subtests: 4 okay)
t/namespace.t ..... ok
t/noreply.t ....... ok
t/nowait.t ........ ok
t/pod-coverage.t .. skipped: Test::Pod::Coverage 1.08 required for testing POD coverage
t/pod.t ........... ok
t/serialize.t ..... ok
t/threads.t ....... ok
t/utf8.t .......... ok

Test Summary Report
-------------------
t/magic.t       (Wstat: 512 Tests: 9 Failed: 2)
  Failed tests:  5-6
  Non-zero exit status: 2
Files=15, Tests=133,  7 wallclock secs ( 0.30 usr  0.06 sys +  5.13 cusr  0.77 csys =  6.26 CPU)
Result: FAIL
Failed 1/15 test programs. 2/133 subtests failed.
t/magic.tがこけてます。

0.18ならどうだ

こちらも試します。
# cpanm K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz
Fetching http://search.cpan.org/CPAN/authors/id/K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz ... OK
Configuring Cache-Memcached-Fast-0.18 ... OK
Building and testing Cache-Memcached-Fast-0.18 for K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz ... FAIL
! Installing K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz failed. See /root/.cpanm/build.log for details.
やはりダメ。build.logの中身はこんな感じ。
# Testing Cache::Memcached::Fast 0.18, Perl 5.008008, /usr/bin/perl
t/00-load.t ....... ok
# Connected to 2 memcached servers, lowest version 1.4.5
t/01-connect.t .... ok
t/02-isa.t ........ ok
t/big_value.t ..... ok
t/commands.t ...... ok
t/key_ref.t ....... ok

#   Failed test at t/magic.t line 52.

#   Failed test at t/magic.t line 53.
# Looks like you failed 2 tests of 9.
t/magic.t ......... 
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/9 subtests 
 (less 3 skipped subtests: 4 okay)
t/namespace.t ..... ok
t/noreply.t ....... ok
t/nowait.t ........ ok
t/pod-coverage.t .. skipped: Test::Pod::Coverage 1.08 required for testing POD coverage
t/pod.t ........... ok
t/serialize.t ..... ok
t/threads.t ....... ok
t/utf8.t .......... ok

Test Summary Report
-------------------
t/magic.t       (Wstat: 512 Tests: 9 Failed: 2)
  Failed tests:  5-6
  Non-zero exit status: 2
Files=15, Tests=133,  6 wallclock secs ( 0.30 usr  0.05 sys +  5.16 cusr  0.76 csys =  6.27 CPU)
Result: FAIL
Failed 1/15 test programs. 2/133 subtests failed.
make: *** [test_dynamic] エラー 255
-> FAIL Installing K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz failed. See /root/.cpanm/build.log for details.
一部違わず同じ箇所でこけてますねえ。

0.17なら無事入りました

0.17も試して見たところ、こちらは無事にインストール出来ました。

問題のmagic.tとは?

しかし、magic.tのテスト内容が気になる所。とりあえず問題の箇所をクローズアップしてみます。
package MyScalar;
use base 'Tie::StdScalar';

sub FETCH {
    "Другой.ключ"
}

package main;

tie my $scalar2, 'MyScalar';

ok($memd->set($scalar2, $scalar2));
ok(exists $memd->get_multi($scalar2)->{$scalar2});

SKIP: {
    eval { require Readonly };
    skip "Skipping Readonly tests because the module is not present", 3
      if $@;

    # 'require Readonly' as above can be used to test if the module is
どうやら、tie関連のテストのようです。
0.18以降でこのテストが追加されているのを見ると、おそらくChangesにも何かしら記載があるはずです。
では、Changesを見てみます。
0.18  2010-04-06
        - make module thread-safe, and fix several bugs.  No need to
        upgrade unless you experienced limitations mentioned below.

        Changes since 0.17:

        Fix RT#56142: handle Perl magic.  Tied scalars, arrays and
        hashes are supported now, as well as Readonly variables and
        other magic stuff.

        Fix t/command.t failure on some Solaris distributions.

        Make module thread-safe with Perl >= 5.7.2.
僕のグダグダ英語スキルによると、以下のように理解できます。
「Perl magicに対応。tieされたスカラや配列、ハッシュは、従来どおり、読み取り専用変数やその他のmagic同様にサポートされるようになった。」
どうやらこれは、RT上でチケットが発行されていた問題らしく、こちらでそのやりとりを確認できます。

今回の問題もRTで既にチケット発行済だった

そして今回の問題も、RT#57150としてチケットが発行されており、既にステータスが「着手」となっておりました。さすが。
おそらく、次期リリースのタイミングでこの問題は解消することでしょう。それまでは、特段差し支え無ければ0.17を使うなり、0.19をforceインストールしたりして凌ぐことになります。

2010-9-22 追記
現在進行形で現象が発生しています。
# cpanm Cache::Memcached::Fast
Fetching http://search.cpan.org/CPAN/authors/id/K/KR/KROKI/Cache-Memcached-Fast-0.19.tar.gz ... OK
Configuring Cache-Memcached-Fast-0.19 ... OK
Building and testing Cache-Memcached-Fast-0.19 for Cache::Memcached::Fast ... FAIL
! Installing Cache::Memcached::Fast failed. See /root/.cpanm/build.log for details.
# cpanm K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz
Fetching http://search.cpan.org/CPAN/authors/id/K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz ... OK
Configuring Cache-Memcached-Fast-0.18 ... OK
Building and testing Cache-Memcached-Fast-0.18 for K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz ... FAIL
! Installing K/KR/KROKI/Cache-Memcached-Fast-0.18.tar.gz failed. See /root/.cpanm/build.log for details.
# cpanm K/KR/KROKI/Cache-Memcached-Fast-0.17.tar.gz
Fetching http://search.cpan.org/CPAN/authors/id/K/KR/KROKI/Cache-Memcached-Fast-0.17.tar.gz ... OK
Configuring Cache-Memcached-Fast-0.17 ... OK
Building and testing Cache-Memcached-Fast-0.17 for K/KR/KROKI/Cache-Memcached-Fast-0.17.tar.gz ... OK
Successfully installed Cache-Memcached-Fast-0.17

2009-10-01

[Perl:テスト]B-OPCheck-0.29

以下の環境でコケました。

# uname -a
Linux cent5server 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/redhat-release
CentOS release 5.3 (Final)


現在の最新版 (0.29)の場合。

cpan[1]> install B::OPCheck

### 中略 ###

CPAN.pm: Going to build F/FL/FLORA/B-OPCheck-0.29.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for B::OPCheck
cp lib/B/OPCheck.pm blib/lib/B/OPCheck.pm
/usr/bin/perl "-Iinc" /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap -typemap /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/B/Utils/Install/typemap OPCheck.xs > OPCheck.xsc && mv OPCheck.xsc OPCheck.c
gcc -c -I/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/B/Utils/Install -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION=\"0.29\" -DXS_VERSION=\"0.29\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" OPCheck.c
OPCheck.xs:16: error: redefinition of typedef ‘Perl_check_t’
ppport.h:3976: error: previous declaration of ‘Perl_check_t’ was here
make: *** [OPCheck.o] Error 1
FLORA/B-OPCheck-0.29.tar.gz
/usr/bin/make -- NOT OK
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
Failed during this command:
FLORA/B-OPCheck-0.29.tar.gz : make NO


0.28の場合。

http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/B-OPCheck-0.28.tar.gz
cpan[2]> install F/FL/FLORA/B-OPCheck-0.28.tar.gz

### 中略 ###

CPAN.pm: Going to build F/FL/FLORA/B-OPCheck-0.28.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for B::OPCheck
cp lib/B/OPCheck.pm blib/lib/B/OPCheck.pm
/usr/bin/perl "-Iinc" /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap -typemap /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/B/Utils/Install/typemap OPCheck.xs > OPCheck.xsc && mv OPCheck.xsc OPCheck.c
gcc -c -I/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/B/Utils/Install -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION=\"0.28\" -DXS_VERSION=\"0.28\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" OPCheck.c
OPCheck.xs:16: error: redefinition of typedef ‘Perl_check_t’
ppport.h:3976: error: previous declaration of ‘Perl_check_t’ was here
make: *** [OPCheck.o] Error 1
FLORA/B-OPCheck-0.28.tar.gz
/usr/bin/make -- NOT OK
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
Failed during this command:
FLORA/B-OPCheck-0.28.tar.gz : make NO


0.27だと入ります。

http://search.cpan.org/CPAN/authors/id/N/NU/NUFFIN/B-OPCheck-0.27.tar.gz
cpan[3]> install N/NU/NUFFIN/B-OPCheck-0.27.tar.gz

### 中略 ###

CPAN.pm: Going to build N/NU/NUFFIN/B-OPCheck-0.27.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for B::OPCheck
cp lib/B/OPCheck.pm blib/lib/B/OPCheck.pm
/usr/bin/perl "-Iinc" /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap OPCheck.xs > OPCheck.xsc && mv OPCheck.xsc OPCheck.c
gcc -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION=\"0.27\" -DXS_VERSION=\"0.27\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" OPCheck.c
OPCheck.c: In function ‘XS_B__OPCheck_enterscope’:
OPCheck.c:210: warning: unused variable ‘mode’
OPCheck.xs: In function ‘XS_B__OPCheck_leavescope’:
OPCheck.xs:231: warning: suggest parentheses around assignment used as truth value
OPCheck.c:241: warning: unused variable ‘mode’
Running Mkbootstrap for B::OPCheck ()
chmod 644 OPCheck.bs
rm -f blib/arch/auto/B/OPCheck/OPCheck.so
gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic OPCheck.o -o blib/arch/auto/B/OPCheck/OPCheck.so \
\

chmod 755 blib/arch/auto/B/OPCheck/OPCheck.so
cp OPCheck.bs blib/arch/auto/B/OPCheck/OPCheck.bs
chmod 644 blib/arch/auto/B/OPCheck/OPCheck.bs
Manifying blib/man3/B::OPCheck.3pm
NUFFIN/B-OPCheck-0.27.tar.gz
/usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t
t/entersub.t .. ok
All tests successful.
Files=1, Tests=1, 1 wallclock secs ( 0.02 usr 0.02 sys + 0.03 cusr 0.02 csys = 0.09 CPU)
Result: PASS
NUFFIN/B-OPCheck-0.27.tar.gz
/usr/bin/make test -- OK
Running make install
Prepending /root/.cpan/build/B-OPCheck-0.27-jY3Jix/blib/arch /root/.cpan/build/B-OPCheck-0.27-jY3Jix/blib/lib to PERL5LIB for 'install'
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/B/OPCheck/OPCheck.bs
Installing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/B/OPCheck/OPCheck.so
Installing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/B/OPCheck.pm
Installing /usr/share/man/man3/B::OPCheck.3pm
Appending installation info to /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/perllocal.pod
NUFFIN/B-OPCheck-0.27.tar.gz
/usr/bin/make install -- OK


2010-01-13 追記
現在も上記の状況が続いております。

2009-09-14

[Perl]過去の「テスト」記事を再度確認しました

[Perl]What I got in YAPC::Asia 2009, notes, and todo - use GFx::WebLog;によると、

Bug reports

id:charsbarさんのトークによれば,バグをブログの記事にするだけで放置するのは良くないとのこと。また,記事にしたあとその問題が修正された場合は,その記事内で報告したほうがいいようだ。検索でその記事に来た人はその記事しか見ない可能性があるからである。


とのことですので、過去の「テスト」記事を見直して、現時点でどうなっているのかを確認しました。
以下、その対象となった記事です。

2009-07-29

[Perl]List-MoreUtils-0.24はPerl5.8.8以前には入らない

7/27にList-MoreUtils-0.24がリリースされました。
しかしPerl5.8.8だと、testコケます。
Reports for List-MoreUtils

Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/0_pod.t .............. ok
t/0_pod_coverage.t ..... skipped: Test::Pod::Coverage not installed
t/List-MoreUtils-pp.t .. ok
t/List-MoreUtils.t ..... Use of uninitialized value in numeric eq (==) at t/List-MoreUtils.t line 45.
Use of uninitialized value in numeric eq (==) at t/List-MoreUtils.t line 45.
Use of uninitialized value in numeric eq (==) at t/List-MoreUtils.t line 45.
t/List-MoreUtils.t ..... Failed 2173/2173 subtests

Test Summary Report
-------------------
t/List-MoreUtils.t (Wstat: 11 Tests: 0 Failed: 0)
Non-zero wait status: 11
Parse errors: Bad plan. You planned 2173 tests but ran 0.
Files=4, Tests=2164, 9 wallclock secs ( 2.58 usr 0.25 sys + 5.56 cusr 0.54 csys = 8.93 CPU)
Result: FAIL
Failed 1/4 test programs. 0/2164 subtests failed.


今のところPerl5.8.8では、0.22を使うしかなさそうです。
ちなみにMooseもこのモジュール使ってます。なので、Moose使うときには予めList-MoreUtils-0.22入れてからMooseを入れないとずっこけます。

2009-09-14 追記
現在、0.24は無かったことになっているようです。
その代わりに Developer Release として0.25_02がリリース済みです。こちらはPerl5.8.8でもテストが通る様ですが、メモリリークしてたりするようなので、もう少々0.22に頑張ってもらうことになりそうです。

2009-07-24

[Perl]MooseX::Types::DateTime::ButMaintained-0.08がテストコケる

MooseX::Types::DateTimeXを入れてるときにコケた。

Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/01_basic.t t/02_olson_abbreviations.t t/03_local_floating.t
t/01_basic.t ................ 12/?
# Failed test 'bad time zone'
# at t/01_basic.t line 89.
# Looks like you failed 1 test of 21.
t/01_basic.t ................ Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/21 subtests
t/02_olson_abbreviations.t .. ok
t/03_local_floating.t ....... ok

Test Summary Report
-------------------
t/01_basic.t (Wstat: 256 Tests: 21 Failed: 1)
Failed test: 16
Non-zero exit status: 1
Files=3, Tests=28, 5 wallclock secs ( 0.09 usr 0.01 sys + 5.34 cusr 0.17 csys = 5.61 CPU)
Result: FAIL
Failed 1/3 test programs. 1/28 subtests failed.
make: *** [test_dynamic] エラー 255
ECARROLL/MooseX-Types-DateTime-ButMaintained-0.08.tar.gz
/usr/bin/make test -- NOT OK


では、テストコードから該当箇所を抜粋。


{
{
package Bar;
use Moose;

has time_zone => (
isa => "DateTime::TimeZone",
is => "rw",
coerce => 1,
);
}

my $tz = Bar->new( time_zone => "Africa/Timbuktu" )->time_zone;

isa_ok( $tz, "DateTime::TimeZone", "coerced string into time zone object" );

like( $tz->name, qr/^Africa/, "correct time zone" );

dies_ok { Bar->new( time_zone => "Space/TheMoon" ) } "bad time zone";
}


coerceまわりがおかしいっぽい。
では、coerceまわりのロジックをチェック。


our %coercions = (
DateTime => [
from Num, via { 'DateTime'->from_epoch( epoch => $_ ) }
, from HashRef, via { 'DateTime'->new( %$_ ) }
, from Now, via { 'DateTime'->now }
]

, "DateTime::Duration" => [
from Num, via { DateTime::Duration->new( seconds => $_ ) }
, from HashRef, via { DateTime::Duration->new( %$_ ) }
]

, "DateTime::TimeZone" => [
from Str, via {
# No abbreviation - assumed if we don't have a '/'
if ( m,/|floating|local, ) {
return DateTime::TimeZone->new( name => $_ );
}
# Abbreviation - assumed if we do have a '/'
# returns a DateTime::TimeZone::OffsetOnly
else {
my $offset = Olson::Abbreviations->new({ tz_abbreviation => $_ })->get_offset;
return DateTime::TimeZone->new( name => $offset );
}
}
]


, "DateTime::Locale" => [
from Moose::Util::TypeConstraints::find_or_create_isa_type_constraint("Locale::Maketext")
, via { DateTime::Locale->load($_->language_tag) }
, from Str, via { DateTime::Locale->load($_) }
]
);


おかしくね、これ。おかしいよ。
だって、dieするわけないよ。そりゃあテスト通りませんよね...

どうしてこうなった!どうしてこうなった!

しょうがないので、force installしましたとさ。おしまい。

2009-09-14 追記
0.09がリリース済みです。
無事にテストも通りましたよ!
good job!

Running make for E/EC/ECARROLL/MooseX-Types-DateTime-ButMaintained-0.09.tar.gz
Is already unwrapped into directory /home/azuma/.cpan/build/MooseX-Types-DateTime-ButMaintained-0.09

CPAN.pm: Going to build E/EC/ECARROLL/MooseX-Types-DateTime-ButMaintained-0.09.tar.gz

/usr/bin/perl "-Iinc" Makefile.PL --config= --installdeps=DateTime::TimeZone,0.96
Cannot determine perl version info from lib/MooseX/Types/DateTime/ButMaintained.pm
cp lib/MooseX/Types/DateTime/ButMaintained.pm blib/lib/MooseX/Types/DateTime/ButMaintained.pm
Manifying blib/man3/MooseX::Types::DateTime::ButMaintained.3pm
/usr/bin/make -- OK
Running make test
/usr/bin/perl "-Iinc" Makefile.PL --config= --installdeps=DateTime::TimeZone,0.96
Cannot determine perl version info from lib/MooseX/Types/DateTime/ButMaintained.pm
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/01_basic.t t/02_olson_abbreviations.t t/03_local_floating.t
t/01_basic.t ................ ok
t/02_olson_abbreviations.t .. ok
t/03_local_floating.t ....... ok
All tests successful.
Files=3, Tests=28, 3 wallclock secs ( 0.02 usr 0.01 sys + 2.23 cusr 0.08 csys = 2.34 CPU)
Result: PASS
/usr/bin/make test -- OK
Running make install
/usr/bin/perl "-Iinc" Makefile.PL --config= --installdeps=DateTime::TimeZone,0.96
Cannot determine perl version info from lib/MooseX/Types/DateTime/ButMaintained.pm
Installing /usr/local/share/perl/5.8.8/MooseX/Types/DateTime/ButMaintained.pm
Installing /usr/local/man/man3/MooseX::Types::DateTime::ButMaintained.3pm
Appending installation info to /usr/lib/perl/5.8/perllocal.pod
/usr/bin/make install -- OK

2009-07-15

[Perl]WWW::Mechanize-1.56がリリースされていた

既に昨日付けで1.58が出ているみたいだけど、こちらは1.56から大層な変更が加えられていないみたい

とりあえず気になったのが、Google group WWW::MechanizeでのLesterさんの発言。
http://groups.google.com/group/www-mechanize-users/browse_thread/thread/62772f07edcc17f9

[THINGS THAT MAY BREAK YOUR CODE]
For a while, Mech used HTTP::Response::Encoding to try to suss out
the proper encoding of the page it receives. Now, it lets
LWP::UserAgent do the work, and no longer requires
HTTP::Response::Encoding.


どうも、HTTP::Response::Encodingに頼っていたエンコード形式の検出を、LWP::UserAgentに任せることにしたらしい。
そもそもHTTP::Response::Encodingは、テストが通らない状態なので、この変更は非常にうれしい限り。

2009-09-14 追記
HTTP::Response::Encoding-0.06が2009-07-28にリリースされています。
こちらはきちんとテストが通りますので、ご安心ください^^

2009-07-13

[Perl]MIME::ToolsのテストMisc.tでコケるのは

t/Misc.t ............. 1/14
# Failed test 'bug 970725-DNA: QP use of RFC2049 guideline 8'
# at t/Misc.t line 78.
# got: '=46rom me'
# expected: '=46rom me=
# '

### 中略 ###

Test Summary Report
-------------------
t/Misc.t (Wstat: 1792 Tests: 14 Failed: 7)
Failed tests: 4-5, 7-11
Non-zero exit status: 7
Files=24, Tests=365, 33 wallclock secs ( 1.27 usr 0.36 sys + 29.08 cusr 1.15 csys = 31.86 CPU)
Result: FAIL
Failed 1/24 test programs. 7/365 subtests failed.
make: *** [test_dynamic] エラー 255
DONEILL/MIME-tools-5.427.tar.gz
/usr/bin/make test -- NOT OK

こんな具合でずっこけたので、ググってみる。

その中でも、cpanからMIME::WordDecoderをインストールしようとしてハマったのでメモ - KUMA TYPEをみてみると、
が、しかし、MIME::WordDecoderの最初のインストール時のログを今見てみるとしっかりチェックでMIME::Base64をversion 2.20からversion 3.03にアップグレードしろって出てるwww。
(現在はアップデートでversion 3.07になった)

さて、今回コケた環境をみてみる。
# perl -MMIME::Base64 -le 'print $MIME::Base64::VERSION'
2.21

古すぎ><

結果、MIME::Base64を最新にしたら、すんなりテストが通ってくれた。

2009-06-18

[Perl]HTTP::Response::Encoding-0.05がテストでこける

オイラのような端くれが、こんな記事を書いていいのだろうか。。。
ともあれ、後学のためにも書かねばいかんと思いますので、キリキリ書いていきます。
それにしても、dankogaiさん作のこのモジュールがテストでコケるとは。。。

まず、現象の出た環境。

# cat /etc/redhat-release
CentOS release 5.3 (Final)
# uname -m
x86_64
# uname -v
#1 SMP Wed Apr 1 09:10:25 EDT 2009
# uname -r
2.6.18-128.1.6.el5


この様な環境でテストを通すと、こんな風になりました。

# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for HTTP::Response::Encoding
# make
cp lib/HTTP/Response/Encoding.pm blib/lib/HTTP/Response/Encoding.pm
Manifying blib/man3/HTTP::Response::Encoding.3pm
# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00-load.t ....... 1/1 # Testing HTTP::Response::Encoding 0.05, Perl 5.008008, /usr/bin/perl
t/00-load.t ....... ok
t/01-file.t ....... 1/13
# Failed test '$res->charset eq 'EUC-JP''
# at t/01-file.t line 49.
# got: undef
# expected: 'EUC-JP'

# Failed test '$res->encoding eq 'euc-jp''
# at t/01-file.t line 51.
# got: undef
# expected: 'euc-jp'

# Failed test '$res->charset eq 'ISO-2022-JP''
# at t/01-file.t line 49.
# got: undef
# expected: 'ISO-2022-JP'

# Failed test '$res->encoding eq 'iso-2022-jp''
# at t/01-file.t line 51.
# got: undef
# expected: 'iso-2022-jp'

# Failed test '$res->charset eq 'Shift_JIS''
# at t/01-file.t line 49.
# got: undef
# expected: 'Shift_JIS'

# Failed test '$res->encoding eq 'shiftjis''
# at t/01-file.t line 51.
# got: undef
# expected: 'shiftjis'

# Failed test '$res->charset eq 'UTF-8''
# at t/01-file.t line 49.
# got: undef
# expected: 'UTF-8'

# Failed test '$res->encoding eq 'utf-8-strict''
# at t/01-file.t line 51.
# got: undef
# expected: 'utf-8-strict'
# Looks like you failed 8 tests of 13.
t/01-file.t ....... Dubious, test returned 8 (wstat 2048, 0x800)
Failed 8/13 subtests
t/boilerplate.t ... ok
t/pod-coverage.t .. ok
t/pod.t ........... ok

Test Summary Report
-------------------
t/01-file.t (Wstat: 2048 Tests: 13 Failed: 8)
Failed tests: 5-12
Non-zero exit status: 8
Files=5, Tests=19, 0 wallclock secs ( 0.02 usr 0.02 sys + 0.18 cusr 0.03 csys = 0.25 CPU)
Result: FAIL
Failed 1/5 test programs. 8/19 subtests failed.
make: *** [test_dynamic] エラー 255


取り敢えず、t/01-file.tを見てみます。


1 #!perl
2 #!perl -T
3
4 use strict;
5 use warnings;
6 use LWP::UserAgent;
7 use HTTP::Response::Encoding;
8 use File::Spec;
9 use Encode;
10 use Cwd;
11 use URI;
12 use Test::More tests => 13;
13
14 my $ua = LWP::UserAgent->new;

### 中略 ###

40 for my $charset (sort keys %charset){
41 my $uri = URI->new('file://');
42 $uri->path(File::Spec->catfile($cwd, "t", $filename{$charset}));
43 my $res;
44 {
45 local $^W = 0; # to quiet LWP::Protocol
46 $res = $ua->get($uri);
47 }
48 die unless $res->is_success;
49 is $res->charset, $charset, "\$res->charset eq '$charset'";
50 my $canon = find_encoding($charset)->name;
51 is $res->encoding, $canon, "\$res->encoding eq '$canon'";
52 }

### 以下略 ###


どうやらこのテストでは、LWP::UserAgentに'file://'なURIを食わせてgetさせています。そうして出てきたHTTP::Responseインスタンスの(HTTP::Response::Encodingで追加された)charsetメソッド及びencodingメソッドをキックして、出力を元にその動作正当性を検証しているようです。

では次に、lib/HTTP/Response/Encoding.pmを覗いてみます。


1 package HTTP::Response::Encoding;
2 use warnings;
3 use strict;
4 our $VERSION = sprintf "%d.%02d", q$Revision: 0.5 $ =~ /(\d+)/g;
5
6 sub HTTP::Response::charset {
7 my $self = shift;
8 return $self->{__charset} if exists $self->{__charset};
9 my $content_type = $self->headers->header('Content-Type');
10 return unless $content_type;
11 $content_type =~ /charset=([A-Za-z0-9_\-]+)/io;
12 $self->{__charset} = $1 || undef;
13 }
14
15 sub HTTP::Response::encoder {
16 require Encode;
17 my $self = shift;
18 return $self->{__encoder} if exists $self->{__encoder};
19 my $charset = $self->charset or return;
20 my $enc = Encode::find_encoding($charset);
21 $self->{__encoder} = $enc;
22 }
23
24 sub HTTP::Response::encoding {
25 my $enc = shift->encoder or return;
26 $enc->name;
27 }
### 以下略 ###


charsetメソッドは、HTTP::Response->headers->header('Content-Type')で得たcontent-typeヘッダを元に、11行目の正規表現にマッチした文字列を返しています。

encodingメソッドは、encoderメソッドが返すEncode::Encodingインスタンスのnameメソッドの結果を返しています。

つまり、

・encodingの動作はcharsetの動作に依存しており、
・charsetの動作はHTTP::Response::headersの動作に依存している

ことになります。従って、先のテストがこけたのは、LWP::UserAgentが("file://"なuriをgetした時の動作が)期待通りの動作をしていない為、という原因が考えられます。では、それを証明するためのテストを書いてみます。


# cat t/lwpua.t
use warnings;
use strict;
use Test::More tests => 7;
use FindBin;
use LWP::UserAgent;
use URI;

my @patterns = (
"http://www.yahoo.co.jp/",
"http://www.google.co.jp/",
"file://$FindBin::Bin/t-euc-jp.html",
"file://$FindBin::Bin/t-iso-2022-jp.html",
"file://$FindBin::Bin/t-shiftjis.html",
"file://$FindBin::Bin/t-utf-8.html"
);

my $ua = LWP::UserAgent->new;
my $res;

for ( @patterns ) {
$res = $ua->get( URI->new( $_ ) );
like(
$res->headers->header( 'Content-Type' ),
qr/^text\/html; charset=/,
$_. " content-type likes qr/^text\/html; charset=/"
);
}

$res = $ua->get( URI->new( "http://www.yahoo.co.jp/" ) );
open my $fh, ">", "$FindBin::Bin/yahoo.html" or die "could not open file";
print $fh $res->content;
close $fh;

$res = $ua->get( URI->new( "file://$FindBin::Bin/yahoo.html" ) );
like(
$res->headers->header( 'Content-Type' ),
qr/^text\/html; charset=/,
"file://$FindBin::Bin/yahoo.html content-type likes qr/^text\/html; charset=/"
);
unlink "$FindBin::Bin/yahoo.html";


上記テストの結果が以下の通りです。


# perl t/lwpua.t
1..7
ok 1 - http://www.yahoo.co.jp/ content-type likes qr/^text/html; charset=/
ok 2 - http://www.google.co.jp/ content-type likes qr/^text/html; charset=/
not ok 3 - file:///root/HTTP-Response-Encoding-0.05/t/t-euc-jp.html content-type likes qr/^text/html; charset=/
# Failed test 'file:///root/HTTP-Response-Encoding-0.05/t/t-euc-jp.html content-type likes qr/^text/html; charset=/'
# at t/lwpua.t line 22.
# 'text/html'
# doesn't match '(?-xism:^text/html; charset=)'
not ok 4 - file:///root/HTTP-Response-Encoding-0.05/t/t-iso-2022-jp.html content-type likes qr/^text/html; charset=/
# Failed test 'file:///root/HTTP-Response-Encoding-0.05/t/t-iso-2022-jp.html content-type likes qr/^text/html; charset=/'
# at t/lwpua.t line 22.
# 'text/html'
# doesn't match '(?-xism:^text/html; charset=)'
not ok 5 - file:///root/HTTP-Response-Encoding-0.05/t/t-shiftjis.html content-type likes qr/^text/html; charset=/
# Failed test 'file:///root/HTTP-Response-Encoding-0.05/t/t-shiftjis.html content-type likes qr/^text/html; charset=/'
# at t/lwpua.t line 22.
# 'text/html'
# doesn't match '(?-xism:^text/html; charset=)'
not ok 6 - file:///root/HTTP-Response-Encoding-0.05/t/t-utf-8.html content-type likes qr/^text/html; charset=/
# Failed test 'file:///root/HTTP-Response-Encoding-0.05/t/t-utf-8.html content-type likes qr/^text/html; charset=/'
# at t/lwpua.t line 22.
# 'text/html'
# doesn't match '(?-xism:^text/html; charset=)'
not ok 7 - file:///root/HTTP-Response-Encoding-0.05/t/yahoo.html content-type likes qr/^text/html; charset=/
# Failed test 'file:///root/HTTP-Response-Encoding-0.05/t/yahoo.html content-type likes qr/^text/html; charset=/'
# at t/lwpua.t line 31.
# 'text/html'
# doesn't match '(?-xism:^text/html; charset=)'
# Looks like you failed 5 tests of 7.


この結果から、LWP::UserAgent::headers->header( 'Content-Type' )の返り値は、"file://"なURIにおいて、"charset=ほげほげ"を含まないと言えそうです。

とりあえずオイラが言えるのは、t/01-file.tのテスト手法はこのままではまずい気がするってことと、現在のHTTP::Response::charsetは"file://"なURIに使わない方が良さそうだと言うことです。

ちなみにこの現象は、Task::Catalystをインストールしようとした際に起こりました。

2009-07-06 追記
rtでいくつかのパッチが公開され始めています。

2009-09-14 追記
7/28に0.06がリリースされていました。
テストもバッチリ通りました!
good job!

CPAN.pm: Going to build D/DA/DANKOGAI/HTTP-Response-Encoding-0.06.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for HTTP::Response::Encoding
cp lib/HTTP/Response/Encoding.pm blib/lib/HTTP/Response/Encoding.pm
Manifying blib/man3/HTTP::Response::Encoding.3pm
/usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00-load.t ....... 1/1 # Testing HTTP::Response::Encoding 0.06, Perl 5.008008, /usr/bin/perl
t/00-load.t ....... ok
t/01-file.t ....... ok
t/boilerplate.t ... ok
t/pod-coverage.t .. ok
t/pod.t ........... ok
All tests successful.
Files=5, Tests=19, 2 wallclock secs ( 0.04 usr 0.00 sys + 0.27 cusr 0.03 csys = 0.34 CPU)
Result: PASS
/usr/bin/make test -- OK
Running make install
Manifying blib/man3/HTTP::Response::Encoding.3pm
Installing /usr/local/share/perl/5.8.8/HTTP/Response/Encoding.pm
Installing /usr/local/man/man3/HTTP::Response::Encoding.3pm
Appending installation info to /usr/lib/perl/5.8/perllocal.pod
/usr/bin/make install -- OK

2009-04-14

[perl]MIME::LiteのRFC対応に難あり

ステキモジュールなMIME::Liteにおいて、RFC2822の4.5.3.1([Page 53]あたり)に準拠しきれていないと思われる現象に出くわした。

まず、このガサツなテストコードを見てほしい。
このコードでやっていることは非常に単純で、極端に長い文字列(1行)をMIME::Lite::encode_8bit() 及び MIME::Lite::encode_7bit() に渡し、返り値の1行あたりの最大文字列長が990以内であるかを検証している。

で、以下その結果(実行環境はubuntu-8.04LTS-amd64/perl-5.8.8)。


1..5
ok 1 - use MIME::Lite;
ok 2 - 1937 bytes gotten, hugest line 990 bytes.
not ok 3 - 2043 bytes gotten, hugest line 1052 bytes.
# Failed test '2043 bytes gotten, hugest line 1052 bytes.'
# at X001_Huge_Line.t line 19.
ok 4 - 1937 bytes gotten, hugest line 990 bytes.
not ok 5 - 2043 bytes gotten, hugest line 1052 bytes.
# Failed test '2043 bytes gotten, hugest line 1052 bytes.'
# at X001_Huge_Line.t line 19.
# Looks like you failed 2 tests of 5.


文字列長が1980より大きい行を与えた場合、改行を2つ以上補完すべきところが、1つしか補完されない。そのためtest3やtest5では、最大で2043文字もある行が残ってしまっている。

取り急ぎ、メンテナさんに報告しておくか。

2009-04-15 追記
RTにてチケットを発行。
初RTだったので、うまくレポート出来たかは何とも言えないが、'MIME-Lite'でチケット検索すれば出てくるようになった。
間違って、状態を一旦"着手"にしてしまったのはご愛嬌><

さらに追記
既に5年前からあるチケットでも、同様の指摘がされていた。うーむ。。。

2009-5-25 追記
テストコードを置いていたサーバのドメインが移行されたので、テストコードへのリンクを変更。

2010-2-17 追記
もう有名な話でしょうけど、今やMIME::Liteを使うのは「モダン」ではありません。その上、メンテナンスもされていないそうです。
Email::SimpleEmail::Send, Email::Sender を使うことをお勧めします。