新しいTest::Moreに追加されたencodingのサポートについて
最新のTest::MoreのAlphaで、encodingのサポートがマージされました。
https://github.com/Test-More/test-more
今までのTest::MoreではTAP出力用に独自のファイルハンドルを用意するので、いくらbinmodeを使ってもUTF-8な文字列を正しく取り扱えませんでした(ターミナルに正しく出力されません)。
UTF-8な文字列を扱うためにはトリッキーなコードを書く必要が有りましたが、これからはシンプルにencodingを指定するだけです。
use utf8;
use Test::More encoding => 'utf8';
ok(0, '日本語のメッセージ');
encodingがutf8の場合は、少し短く書けます。
use Test::More qw/utf8/;
新しく導入されたtap_encoding関数を使ってもを指定できます。
tap_encoding 'utf8';
ok(0, '日本語のメッセージ');
ターミナルのエンコーディングが予め予想できない場合は、Encode::Localeを使います。
use Encode::Locale;
use Test::More;
tap_encoding 'console_out';
早く正式リリースされるといいですね。
2014-08-24 Permalink