なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Test::More で Non-zero wait status: 14 とでてテストが正常に終了しない

Test::More などを使ってテストしている際、 Non-zero wait status: 14 と出てしまい、
テストが全て走らずに、見た目上は成功して終了する、というケースに遭遇しました。

最も近いものとしては、この現象になります。

Test::More wait status non-zero but all tests pass

exit status が違うのでこの人の場合とは違っていたのですが、
上記スレッドにあるこちらの解答によって、答えにたどり着くことが出来ました。

示されている exit status は 14 で、これは SIGALRM です。
標準動作によるとプロセスの終了が行われるようなので、動作としては、
テストされていた関数のどこかにあった alarm N; よりも後続のテストの時間がかかり、
最終的には飛んできたシグナルに殺されていたというものでした。

ということで、対処法は alarm 0; でリセットしてあげるか、
該当部分を Mock してあげることで、解決しました。

久しぶりの Perl の記事でした(。・ω・。)。