ドキュメントとテストコードつきのPerlスクリプトを書く方法
Re http://d.hatena.ne.jp/perlcodesample/20091130/1258979624, http://mt.endeworks.jp/d-6/2009/12/scriptsubimport.html
スクリプトとコードとテストを単一のファイルにまとめたい*1という需要が、かねて自分の中であったので教えを請うた結果、以下のような感じで書けばいいことがわかった。
#! /usr/bin/perl use modules...; my $global = ...; sub foo { ... } sub bar { ... } run_tests() if $ENV{HARNESS_ACTIVE}; # メインのコード foo(); bar(); ... sub run_tests { ... exit; } __END__ =head1 NAME my_script.pl ...
テストをするには、
% prove my_script.pl
とやれば、HARNESS_ACTIVE 環境変数がセットされてるのでテストコードが実行される、と。これは便利。yappo++ tokuhirom++
ちなみに Test-Inline-2.213 - Embed your tests in your code, next to what is being tested - metacpan.org みたいなアプローチもあるらしい
20:41追記:
で、上みたいに書いたファイルを CPAN モジュールに含める場合は、Makefile.PL に
install_script 'my_script.pl'; tests 'my_script.pl';
とか書けばいいらしい。tokuhirom++
*1:複数のファイルに分割する労力を払うならコードをモジュール化して普通にテスト書きます