Minillaで複数のテストスイートを実行するようにする
今ちまちま書いてるRedisismというRedis向けのフレームワークでは、Redisとのコネクション周りとかクエリ投げたりするところのハンドリングを自前では持っていなくてほとんど同じインターフェースなので、RedisDBあるいはRedisに任せている。
そうなると、Redisあるいは、RedisDBの両方で同じテストスイートを実行するようにしたくなるので、Text::XslateのAnyMoose対応を参考にModule::Install::Targetを使ってやっていたのだけど、Minillaへ置きかえてみた。
Minillaだと、minil.tomlに
[build] build_class = "builder::MyBuilder"
を追加して、自前でModule::Buildを拡張したものを書く、という感じにできる。
Creating working directory: /Users/yoshimin/project/perl/Redisism/.build/rHpXPchM Detecting project name from directory name. Retrieving meta data from lib/Redisism.pm. Name: Redisism Abstract: framework for Redis based application. Version: 0.01 Writing MANIFEST file Writing release tests: xt/minimum_version.t Writing release tests: xt/cpan_meta.t Writing release tests: xt/pod.t Writing release tests: xt/spelling.t $ perl -I/Users/yoshimin/project/perl/Redisism/.build/rHpXPchM Build.PL Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'Redisism' version '0.01' Merging cpanfile prereqs to MYMETA.yml Merging cpanfile prereqs to MYMETA.json $ perl -I/Users/yoshimin/project/perl/Redisism/.build/rHpXPchM Build build Building Redisism $ perl -I/Users/yoshimin/project/perl/Redisism/.build/rHpXPchM Build test Testing: $ENV{REDIS_CLIENT} = "Redis" t/000_load.t .......... ok t/001_basic.t ......... ok t/011_factory.t ....... ok t/020_list.t .......... ok t/030_set.t ........... ok t/040_sorted_set.t .... ok t/050_hash.t .......... ok xt/cpan_meta.t ........ ok xt/minimum_version.t .. ok xt/pod.t .............. ok xt/podcoverage.t ...... ok xt/podsynopsis.t ...... ok xt/spelling.t ......... Possible attempt to separate words with commas at xt/spelling.t line 12. xt/spelling.t ......... skipped: no ~/.spellunker.en All tests successful. Files=13, Tests=57, 6 wallclock secs ( 0.10 usr 0.05 sys + 4.84 cusr 0.44 csys = 5.43 CPU) Result: PASS Testing: $ENV{REDIS_CLIENT} = "RedisDB" t/000_load.t .......... ok t/001_basic.t ......... ok t/011_factory.t ....... ok t/020_list.t .......... ok t/030_set.t ........... ok t/040_sorted_set.t .... ok t/050_hash.t .......... ok xt/cpan_meta.t ........ ok xt/minimum_version.t .. ok xt/pod.t .............. ok xt/podcoverage.t ...... ok xt/podsynopsis.t ...... ok xt/spelling.t ......... Possible attempt to separate words with commas at xt/spelling.t line 12. xt/spelling.t ......... skipped: no ~/.spellunker.en All tests successful. Files=13, Tests=57, 6 wallclock secs ( 0.07 usr 0.04 sys + 4.77 cusr 0.41 csys = 5.29 CPU) Result: PASS
今の時点だと、別々に実行する必要のないところが2回走ってしまう(xt/とか)のがちょっとアレではあるけど、とりあえず良いということにした。
Module::Buildは色々覚えること多そうで移行するのめんどくさいなぁと思っていてまだModule::Install使っていたのだけど、なかなかMinillaは使いやすいし個人的にはもう移行してもよいかなという気になってきた。Module::Buildの拡張もいざやってみると拡張しやすくて使いやすい。Minilla本体ではまだ色々変更が入っているので、こういうニッチな部分はまだまだ仕様が代わったりしそうではある。