nDiki : 2013年10月22日

2013年10月22日 (火)

Capture::Tiny で Perl テストスクリプトの中で標準エラー出力を一時的に止める

意図的に出していて問題のない標準エラー出力への警告などをテスト実行(prove)時には出さないようにしたいというのはままある。で話題になった時にずいぶん昔にやった方法を紹介したりするのだけれど、まあ毎回自前で dup するのもということで CPAN モジュール探した。

期待する標準エラー出力への出力かどうかのテストをするなら Test:: 系をだけれど、ここでは単純に抑制したいだけなので Capture::Tiny で良いかな。

なお標準エラー出力をまるっと止めると、出ることが意図されていない警告にも気がつかなくなるので注意を。

 #!/usr/bin/perl

 use warnings;
 use strict;

 use Test::More;
 use Capture::Tiny qw/capture_stderr/;

 sub warn_function {
   warn "WARN FUNCTION";
   return 1;
 }

 sub warn_command {
   `echo "WARN COMMAND" >&2`;
   return 1;
 }

 sub uuv_function {
   my $undef_var;

   # Use of uninitialized value
   return $undef_var ne "dog";
 }

 subtest capture_stderr => sub {
   capture_stderr sub {
     ok warn_function;
   };

   capture_stderr sub {
     ok warn_command;
   };

   capture_stderr sub {
     ok uuv_function;
   };

 };

 done_testing;

[ Perl テストスクリプトの書き方 ]

スポンサード リンク

今日のさえずり: mixiボイス「つぶやき検索」コンテンツ力高い

2013年10月22日

[ 10月22日全て ]

About Me

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

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

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

月別インデックス
Process Time: 0.192208s / load averages: 0.92, 0.69, 0.66
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker