About Digital

i wanna be a bot...

Web::Queryのtestがコケた話

Posted in  Perl, Tech | Comments

先日、CentoOSにWeb::Queryを入れようとしたらこけてハマってた。レガシーなシステムでの使用だったので当然Cartonなんか使ってないし、モジュールはそれぞれのサーバに入って直接cpanmする形だったが、やはりこういったレガシーな開発手順というのは早めに駆逐されたほうが世の(開発者)のためだと感じた。

開発環境では一発で入ってたし、試しにと手元のMBAにcpanm Web::Queryしても問題なく入ったのに、肝心の本番サーバでWeb::Queryが入らない。テストでこけてる。その他perl5.8.8を新規に入れたまっさら状態のサーバを用意して試しても見たけど再現しない。なんなんだ。

ためしに最新版ではない、0.16とかいくつか古いバージョンのWeb::Queryも試したけれど、特に違いはうまれなかったので、最近の変更が原因ではなさそう。

サマリーだけ抜き出すとこんな感じ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Failed Test        Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/07_remove.t         2   512    10    2  20.00%  2-3
t/08_indent.t         1   256     2    1  50.00%  1
t/09_as_html.t        8  2048     8    8 100.00%  1-8
t/add.t               4  1024     8    4  50.00%  1-4
t/add_class.t         2   512     4    2  50.00%  1-2
t/after.t             1   256     2    1  50.00%  1
t/append.t            1   256     2    1  50.00%  1
t/before.t            1   256     2    1  50.00%  1
t/clone.t             1   256     2    1  50.00%  1
t/contents.t          2   512     4    2  50.00%  1-2
t/detach.t            2   512     6    2  33.33%  1-2
t/insert_after.t      1   256     2    1  50.00%  1
t/insert_before.t     1   256     2    1  50.00%  1
t/prepend.t           1   256     2    1  50.00%  1
t/remove_class.t      2   512     6    2  33.33%  2-3
t/replace_with.t      4  1024     8    4  50.00%  1-4
t/store_comments.t    2   512     4    2  50.00%  1-2
Failed 17/28 test scripts, 39.29% okay. 36/135 subtests failed, 73.33% okay.
FAIL

HTML::Element

結論からいうとHTML::Elementが入ってなかった。

Web::Queryの依存モジュールに入ってないから必ずしもHTML::Elementが必要なわけではないのだろうけど(というか依存モジュール入れる時点で入りそうなもんだけど)、これがないと何故か’\n’がwq->as_htmlだかの結果に入り込んでテスト結果が誤判定?されてしまっていた。cpanm --look Web::Queryしてテストを自分で書き換えたりもしてみたら、どうにもやはりこの”\n”が問題のようなんだけど、これはなんでだろう。

「これは何かおかしい」と思って、適当に関係しそうっぽいモジュールを入れてから再度cpanmすると、今度は何事もなかったかのようにインストールされた。それがHTML::Elementだった。他にもHTML::ParserとかXML::LibXMLとか色々入れなおしたけど、やっかいなのはこれな気がする。

何が面倒かって、特にモジュールが足りてない(Can’t locate~)とか言われずに、淡々とテストの文字列比較で落ちてるのが面倒だった。

おわりに

一応エラーのログを貼っておこうかと思う。結局技術的に踏み込んで解決策を見出したわけでもないゆるふわな記事だけど、まぁそういう風にハマってた人もいたってことで。

ちなみに、このWeb::Query、とても便利。

Comments