nDiki

2006年12月15日 (金)

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

make test で実行するテストスクリプトの中で、標準エラー出力を止めたい場合がある (わざとエラーを起こす時など)。

Perl 5.8.8 の ExtUtils/MM_Unix.pm を参考に

  {
    local *STDERR_COPY;
    my $duped = 0;
    $duped = 1 if open(STDERR_COPY, '>&STDERR');
    open(STDERR, '> ' . File::Spec->devnull()) if $duped;
    my $result = `$command`;
    my $status = $?;
    open(STDERR, '>&STDERR_COPY') if $duped;
  }
  warn "This message is printed to STDERR\n";

としてみた。 LinuxWin32 ではとりあえずうまくいって動いている。

追記

(open が2引数なのは、当時古い Perl バージョンでも動くように書いたから)


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

[ 12月15日全て ]

About

Process Time: 0.190593s / load averages: 0.40, 0.35, 0.41