2009-09-06
Test::Dependencies と Module::Install でテストが通らない
依存モジュールの指定漏れを防ぐ方法 - 名称未設定 - subtech
Makefile.PL に書き忘れている依存モジュールを自動検出してくれるテストモジュール Test::Dependencies ですが、Module::Install と併用していると、テストがコケます。
これは、Module::Install が生成する META.yml の中に、
build_requires: ExtUtils::MakeMaker: 6.42
が書いてあるのに関わらず、どのテストスクリプトにも、use ExtUtils::MakeMaker が無いのが原因です。
META.yml の中の ExtUtils::MakeMaker の記述を消せば、テストは通るのですが、自動生成されるファイルをいちいち編集するのも面倒ですし、そもそも Module::Install が、わざわざバージョン指定しているので、消すことによって何か不具合が起こりそうですし、解決策としてはやっつけ過ぎです。
他の CPAN モジュールはどうしているのかなと思い、いくつか同梱の META.yml を覗いてみましたが、build_requires に ExtUtils::MakeMaker を指定していないモジュール結構ありました。
結局、どうしたら良い解決法なのか分かりませんが、とりあえず、下記のように Test::Dependencies を使っているテストスクリプトに、use ExtUtils::MakeMaker を書いて誤魔化すことにしました。
use ExtUtils::MakeMaker; use Test::Dependencies exclude => [qw/Test::Dependencies MyModule/], style => 'light' ; ok_dependencies();
皆さんはどう対処されているでしょうか?
リンク元
- 8 http://reader.livedoor.com/reader/
- 6 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CIMBEBYwAA&url=http://d.hatena.ne.jp/Craftworks/20090906/1252247046&ei=Wo2rT5ahFqSSiAftj42ZAw&usg=AFQjCNEKNXkREjbOZxVLtVnyBfd3uo5N-g
- 4 https://www.google.co.jp/
- 3 http://mixi.jp/view_diary.pl?url=http://d.hatena.ne.jp/Craftworks/20090906/1252247046&owner_id=865357
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CGcQFjAB&url=http://d.hatena.ne.jp/Craftworks/20090906/1252247046&ei=Xnj-T6S-DIf-mAXs1omuBQ&usg=AFQjCNEKNXkREjbOZxVLtVnyBfd3uo5N-g&sig2=Dm_tUbORsuBLmJbggYvHKA
- 2 http://b.hatena.ne.jp/add?mode=confirm&title=Test::Dependencies %u3068 Module::Install %u3067%u30C6%u30B9%u30C8%u304C%u901A%u3089%u306A%u3044 - Craftworks Tech Blog - Branch&url=http://d.hatena.ne.jp/Craftworks/20090906/1252247
- 2 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/Craftworks/20090325/1237942743
- 2 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/Craftworks/20090906/1252247046
- 2 http://perlperl.com
- 2 http://www.google.co.jp/hws/search?hl=ja&client=fenrir-sub&channel=smac&adsafe=off&safe=off&q=Module::Install+バージョン指定&btnG.x=0&btnG.y=0&lr=all
