plugin-start.plを使って自作プラグインのテスト用スクリプトをつくってみた。

TinyURLを操作するPlagger用フィルタid:otsuneさんから「plagger/tools/plugin-start.pl Filter::TinyURLで依存やtestも書いちゃうのはどうか」ってコメントをいただいたのでやってみた。というか、正直これが何のことかよくわからなかったので、まずは調査。

「tools/plugin-start.pl Foobar::Hoge」でPlaggerプラグインのひな形が出来るようになったによるとどうもプラグインの依存パッケージやテストコードのひな形をディレクトリ構造ごと作成してくれるスクリプトplugin-start.plだということ。
cpanからインストールした環境ではどこにあるのかわからなかった(インストールされてなかった)ので、CPANのPlaggerから丸ごとダウンロードして中にあるtoolsごとコピーしました。

とりあえず実行してみると、

$ ./plugin-start.pl Filter::TinyURL
Creating lib/Plagger/Plugin/Filter/TinyURL.pm
Creating Filter-TinyURL.yaml
Creating t/plugins/Filter-TinyURL/base.t

という感じでひな形となるファイルが作成されます。中身はこんな感じ。

TinyURL.pm
プラグイン本体。先日のエントリからコピペ。
Filter-TinyURL.yaml
依存関係を書くファイル。実行に必要なパッケージを書く。
base.t
テスト用のスクリプトを書く。

作成に関してはPlaggercpanアーカイブとかを参考にして、とりあえず見よう見まねで書いています。間違ってるところがあったら突っ込んでくださいませ。また、ふしはらかんの四方山話さんの「 - Publish::HatenaGraphを変更してみる」を参考にさせていただきました。

deps/Filter-TinyURL.yaml

name: Filter::TinyURL
author: Toshi
depends:
  URI::Find: 0
  URI::http: 0
  WWW::Shorten::TinyURL: 0

このパッケージのあとの「:0」ってのの意味がよくわからない。

t/plugins/Filter-TinyURL/base.t

use strict;
use t::TestPlagger;

test_plugin_deps;
plan 'no_plan';
run_eval_expected;

__END__

=== Loading Filter::TinyURL
--- input config
plugins:
  - module: CustomFeed::Debug
    config:
      title: foo
      entry:
        - title: bar
          link: http://tinyurl.com/3yr2fs

  - module: Filter::TinyURL
    config:
      be: long
--- expected
is $context->update->feeds->[0]->entries->[0]->{link}, http://d.hatena.ne.jp/toshi123/

Loading Filter::TinyURL以下にテスト用のスクリプトとその出力結果を書く。ここではTinyURLから元のURLに戻す設定のyamlを書いてみた。

やることはこれだけ。すごく簡単にテスト用のスクリプトを作ることができるので、野良プラグインを作るときにはちょっと試してみると良い感じかも。