« NONDRINKING | メイン | 本日の体操 »
2005年11月30日
[技術] DateTimeのインストール時のテストエラー対応
【技術メモ】
自宅の開発用PCにセットアップしたRedhat Linux 9.0 にCPANのDateTimeモジュールをインストールしようとしたら、テストプログラムの実行で以下のようなエラーが発生した。
[root@rhl9 DateTime-0.2901]# /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0,
'blib/lib', 'blib/arch')" t/20infinite.t
t/20infinite....NOK 17
# Failed test 'infinity (datetime) == infinity (number)'
# in t/20infinite.t at line 72.
# got: '-0001--01--01T-01:-01:-01'
# expected: 'inf'
t/20infinite....NOK 18
# Failed test 'neg infinity (datetime) == neg infinity (number)'
# in t/20infinite.t at line 75.
# got: '-2147483648--2147483648--2147483648T-2147483648:-2147483648:-2147483648'
# expected: '-inf'
t/20infinite....ok 27/40# Looks like you failed 2 tests of 40.
t/20infinite....dubious
Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 17-18
Failed 2/40 tests, 95.00% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/20infinite.t 2 512 40 2 5.00% 17-18
Failed 1/1 test scripts, 0.00% okay. 2/40 subtests failed, 95.00% okay.
同じバージョンのDateTimeは、ホスティングサーバ(RHL9)や自宅の別マシン(FedoraCore3)では問題なくインストールできている。
テストプログラム(t/20infinite.t)のエラー発生個所である72行目と75行目は以下のようになっている。
is( $pos, $posinf,
"infinity (datetime) == infinity (number)" );
is( $neg, $neginf,
"neg infinity (datetime) == neg infinity (number)" );
そこで、以下のようなプログラムを作成して、$posと$posinfの値を出力してみた。
----
#!/usr/bin/perl -w
use strict;
use lib qw{../blib/lib ../blib/arch};
use DateTime;
my $pos = DateTime::Infinite::Future->new;
my $posinf = 100 ** 100 ** 100;
print "pos=$pos, posinf=$posinf\n";
----
これをエラーが出たマシンと出なかったマシンの両方で実行してみたら、どちらも以下のように同じ結果になった。
[root@rhl9 t]# perl s.pl
pos=-0001--01--01T-01:-01:-01, posinf=inf
このことから、おかしいのは、DateTimeではなくて、結果を判定しているTest::More::is()であると当たりをつけて、両マシンでのTest::Moreのバージョンを確認すると
エラーの出たマシン 0.62
テスト成功のマシン 0,47
とエラーが出たほうのマシンのTest::Moreモジュールのバージョンが上だった。
ということで、DateTimeには問題ないと判断して、make installでインストールを続行することにした。
投稿者 nekobara : 2005年11月30日 21:47
トラックバック
このエントリーのトラックバックURL:
http://www.ishihara.ne.jp/mt/mt-tb.cgi/776