LoginSignup
1
1

More than 5 years have passed since last update.

travisのCIでt::Utilがコンパイルエラーを起こしているとエラー内容を検知できない場合の対処方法

Last updated at Posted at 2015-11-15

タイトル通りの内容です。

エラーの内容

TravisでpushごとにCIを走らせている設定にしていたんですが、以下のようなことを言われた。
(以下はtravisのログのコピペ)

$ PERL5OPT='-MDevel::Cover=-db,./cover_db' carton exec prove -lrv t && carton exec cover -ignore_re "^local/" -report coveralls
Can't load module t::Util at /home/travis/perl5/perlbrew/perls/5.20/bin/prove line 12.
The command "PERL5OPT='-MDevel::Cover=-db,./cover_db' carton exec prove -lrv t && carton exec cover -ignore_re "^local/" -report coveralls" exited with 2.
Done. Your build exited with 1.

エラーが起こったことはわかったんだけど、エラー内容がわからなくて対処できんというやつです。

proveはモジュール読み込みで失敗した際、存在有無とかコンパイルエラーとか原因に関わらず単純に「エラーだよ」というメッセージしか出さないみたいです。どうしよう。

対処方法

どう対処するかと言ったらinstall hookでperlを動かしてみて検知するしかない。
以下のように install時に carton exec perl t/Util.pm を実行するように追記。

travis.yml
# 前略
install:
  - carton install
  - carton exec perl t/Util.pm
# 後略

そして git push 後にログを見る。

$ carton exec perl t/Util.pm
Can't locate String/CamelCase.pm in @INC (you may need to install the String::CamelCase module) (@INC contains: /home/travis/build/celeron1ghz/p5-Hirukara-Web/t/../lib /home/travis/build/celeron1ghz/p5-Hirukara-Web/local/lib/perl5/x86_64-linux /home/travis/build/celeron1ghz/p5-Hirukara-Web/local/lib/perl5 /home/travis/perl5/perlbrew/perls/5.20/lib/site_perl/5.20.0/x86_64-linux /home/travis/perl5/perlbrew/perls/5.20/lib/site_perl/5.20.0 /home/travis/perl5/perlbrew/perls/5.20/lib/5.20.0/x86_64-linux /home/travis/perl5/perlbrew/perls/5.20/lib/5.20.0 .) at /home/travis/build/celeron1ghz/p5-Hirukara-Web/t/../lib/Hirukara.pm line 47.
BEGIN failed--compilation aborted at /home/travis/build/celeron1ghz/p5-Hirukara-Web/t/../lib/Hirukara.pm line 47.
Compilation failed in require at t/Util.pm line 65.
BEGIN failed--compilation aborted at t/Util.pm line 65.
The command "carton exec perl t/Util.pm" failed and exited with 2 during .
Your build has been stopped.

はい、dependenciesの追記忘れですね。

cartonでやっていれば大体はそんなことは起こらないんですが、うっかりcarton installでなくcpanmでインストールすると、開発環境だと存在するけれどテスト実行環境だとないモジュールが存在する感じになります。

こういう場合はvagrantとかで手元にクリーンな環境を用意してそれを利用すべきですが、すぐ解決したい場合にご参考ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1