Perl のテスト機構を欺く
#!/usr/bin/perl use strict; use warnings; use Test::More tests => 1; print "a"; ok(1); # 絶対通るはずなんだけど...
ok の引数が 1 だから、絶対に通るはずのテストです。でもコレが通らないんだ。
% prove a.t a.... Failed 1/1 subtests Test Summary Report ------------------- a (Wstat: 0 Tests: 0 Failed: 0) Parse errors: Bad plan. You planned 1 tests but ran 0. Files=1, Tests=0, 1 wallclock secs ( 0.00 usr 0.05 sys + 0.00 cusr 0.05 csys = 0.09 CPU) Result: FAIL Failed 1/1 test programs. 0/0 subtests failed.
こんな感じ。(一応コケる理由はなんとなく分かってるけどね)
たとえば自分で書いたモジュールのテストをしているときに、モジュールが提供している関数側で print している場合はデバッグが困難になるよなぁ。。。つーか実際にそういうコードを書いて悩んだんだけどね。
tests をちゃんと書かずに no_plan にしてもコケてくれるのが救いといえば救いかなぁ。
ちなみに、5.8 と 5.10 で試したけど、どっちもダメだった。