App::Hacheroというモジュールでちょっと前からWin32でテストがコケていて、直せるもんなら直したいなぁ、と思っていたんですが、夏休みという事で(普段と何も変わらんのですが)思い切ってvmware fusionのWindows XPにActivePerlをインストールしてみました。 http://www.activestate.com/activeperl/downloads に行ってMSIをダウンロードしてインストーラを実行して、コマンドプロンプトを立ち上げてcpanって打ち込むとよしなにcpanが動くようにしてくれました。なんだ簡単じゃないですか。それであとは依存モジュールを普通にもりもり入れてテストするだけ。 一点困ったのが、cpan DateTime::TimeZoneを実行すると、MAXLINELENGTHが小さいと言われてエラーになる件。ググるとdmake -x MAXLINELENGTH=300000とかしろという話だったんですが、小文字の「-x」はInvalid argumentと言われ、試しに大文字の「-X」として実行したら通りました。

> cpan
cpan> look DateTime::TimeZone
> perl Makefile.PL
> dmake -X MAXLINELENGTH=300000
> dmake -X MAXLINELENGTH=300000 test
> dmake -X MAXLINELENGTH=300000 install

という感じです。

- x - export macro values to environment
- X - ignore #! lines at start of makefile

という事で、意味的には小文字の方がただしそうなんですが。あってんのかな。 で、App::Hacheroですが、何でテストがコケていたかというと、

  • http://www.cpantesters.org/cpan/report/92fcb7f4-5a86-1016-8ffa-8d83edd5e24b
  • http://www.cpantesters.org/cpan/report/07530152-b19f-3f77-b713-d32bba55d77f このへんを見ると
  • ファイルパスを文字列として扱って、ファイル名を正規表現で取り出そうとしていた
  • ファイルコピーをsystem(‘cp’)でやっていた
  • Templateで加工した結果を比較するときに改行コードを考慮しなかった の3点くらいがありそう。いかにもwindowsでの実行を考えてなかったパターンですね。 という事で http://github.com/lopnor/App-Hachero/commit/6e89659aa35902e04dad020173c5533628935a76 この変更をして手元のWindowsでテストを通して0.13としてリリースしました。 http://search.cpan.org/~danjou/App-Hachero-0.13/ ということで、Windowsでのテストを食わず嫌いしてましたが、意外に簡単だったので、これからはちゃんとWindowsでテストしてからリリースしようと思いました!