nDiki

2011年1月19日 (水)

Test::More の TODO: は無意味

PerlTest::More を使ったテストを修正していて、fail するけど今すぐ直せないのがあったので TODO: { } で囲ったんだけれど何も変わらないじゃない。 あれそんな時は perldoc Test::More の TODO: BLOCK サブセクションでも TODO: { } で囲ってるじゃん。

「そもそもテストが TODO: な ブロック内だってことどうやって判定しているのよ、どんな Perl マジック?」と調べたら…… $TODO 変数設定されているか見ているだけだった(あるいは Test::More->builder->{Todo} が defined か)。 ドキュメント中の local $TODO = $why; の方が肝だった。 ああ、それは説明文するための optional な設定だと思ってたよ。

そもそも TODO: って文法的にはブロックの名前じゃなくてただのラベルか? ということで

 TODO: {
   local $TODO = $why;

   ok( foo(),       $test_name );
   is( foo(42), 23, $test_name );
 };

 {
   local $TODO = $why;

   ok( foo(),       $test_name );
   is( foo(42), 23, $test_name );
 };

でいい訳で。完全に人向けの飾りだった。

「TODO:」? あんなの飾りです。偉い人にはそれがわからんのですよ。

良い子のみんなは $TODO 多用しちゃ駄目だぞ。

2011年1月20日追記

@tokuhirom 情報より。

Test::More::todo_skip を使う場合は中で last TODO; しているので TODO: が必要。 ちなみに Test::More::skip の中では last SKIP; しているので SKIP: が必要。

スポンサード リンク
[ 1月19日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.164232s / load averages: 1.35, 1.51, 1.48
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker