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 の記事でした(。・ω・。)。