2013/04/13

成果: Perl QA Hackathon 2013 Satellite at Tokyo

Perl toolchain 系の話題にキャッチアップしたかったのと、Test::* 系のモジュールを Hack するのもありだって聞いたので、わりと急でしたが Perl QA Hackathon 2013 Satellite at Tokyo に参加させて頂きました。

会場を提供してくださった FreakOut さん @coji さんありがとうございました。

成果

Test::AllModules

アプリケーションのモジュールをまとめて全部 use してコンパイルテストするモジュールであるところの Test::AllModules をちょいとアップデートしまして、use する処理を fork して行えるオプションをつけたり、use_ok なんかはコードを書かないでオプションだけで実行できるようにしました。

use Test::AllModules;

BEGIN {
    all_ok(
        search_path => 'MyApp',
        use  => 1,
        fork => 1,
    );
}

こんな感じで MyApp 以下を軒並み use テスト(それぞれ個別プロセス)できます。とにかく、よくやることはシンプルに書けるようにしました。全モジュールにもりもり独自の処理をテストするためのインターフェースもありますが、説明が長くなりそうなのでそっちは割愛。ドキュメントをどうぞ。

Test::NoLoad

とあるモジュールがロードされてたらこけるテストを書くための Test::NoLoad も少し手を入れました。ロードされてたくないモジュールをリストするとき、qr/Foo::Bar::.*/ みたいな感じで正規表現書けるようになりました。マッチしたらこけます。

ちなみにこのモジュールは極めて俺しか得しないのでまあどうでもいいです。

Minilla, Dist::Milla

Perl Module Authoring Tool であるところの MinillaDist::Milla を試してみました(本日の本題)。

Minilla は tokuhirom さん、Dist::Milla は miyagawa さんが開発しています。名前が似ている上にお互いのドキュメント上でリンクしあっているのでさらっと区別つけて読まないと最初まざりがちです。それぞれの細かい違いや方向性はドキュメントに書かれていますが、おおざっぱに以下のようなとらえ方でいまのところは良さそう。

  • Minilla: 依存少なくてサクッと使える
  • Dist::Milla: 依存多めですが、Dist::Zilla の資産が利用できる

というわけで、ハッカソンの間に、自分のモジュール(Benchmark::Confirm)を Minilla で CPAN リリースしてみました。XSもないごく普通のモジュールだったので本当に一撃でした。

$ git co -b minillize
$ minil migrate
$ git ci
$ git co master
$ git merge minillize
$ minil release

今回は migrate でしたが、モジュールを作る作業の一連をぜんぶまとめて面倒見てくれるのですっごい便利そう。新しいのを次に書くときはゼロから使ってみようかなと思いました。考えることと手間が減って捗りそう。

そして、Dist::Milla も対応してみようかなとやってたとこでタイムアップとなりました。

乙でしたー。

サイト内検索