
Debian sarge の perl は 5.8.4 なんですが、 Class::DBI を make test すると t/16-reserved でFAILする。(DBD-SQLite は 1.08 を使用)
t/16-reserved.........ok 2/5Argument "Bad Taste" isn't numeric in subroutine entry at /usr/lib/perl5/site_perl/5.8.4/DBIx/ContextualFetch.pm line 51. # Failed test (t/16-reserved.t at line 27) # got: undef # expected: '10' t/16-reserved.........ok 5/5# Looks like you failed 1 tests of 5.
調べてみると perl 5.8.4 以前で looks_like_number に undef を 放り込んだときに真を返してしまうバグらしい。 http://use.perl.org/comments.pl?sid=25179&cid=38508 そのバグが原因で DBD::SQLite の dbdimp.c の内部で使っている looks_like_number に反応して undef の value を double で bind するのが、Class::DBIのテストでエラーになる原因ってそんな状況。
cdbi-talk で Class::DBI 0.96 and perl 5.8.3 - bad combo? という話題がありましたが、多分原因は一緒。
解決方法としては、5.8.5以上(現在 Stable は5.8.6)をインストールするか、debian package に patch をあてて再インストールするかですね。

Comments