NetBeansのbuild.xmlはテストがコケてもfailするから,Hudsonさんが判断に困るよ

という話。Hudsonさんがビルドの結果を失敗と見なす理由の一つに「ジョブで動かしたプログラムの終了コードが0以外」ってのがありまして,これを拾うと問答無用でビルド失敗(赤ランプ)となります。
#「理由の一つ」とか言ってみたものの,他の理由は知らないよ。えへへ。


それに対して不安定(黄色ランプ)になるのは「ジョブは正常終了したけど,テストレポートに失敗が含まれる」なので,NetBeansが生成するbuild.xmlのようにテストが失敗すると,

== nbproject/build-impl.xml より ==
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
  <fail if="tests.failed">Some tests failed; see details above.</fail>
</target>

という風にfailしているのはHudson的に好ましくない。だから,こんな具合にbuild.xmlで元のターゲットを上書きすることにしたよ。
#build-impl.xmlを書き換えるのは気が引けたので。

<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
  <fail if="tests.failed" status="0">Some tests failed; see details above.</fail>
</target>

ps.
NetBeansの地味な特徴に「ビルドシステムがAntベース」ってのがある。これのおかげで融通利かないところもあるんだけど,比較的行儀の良いbuild.xmlを生成してくれるので,build.xmlエディタとして高い評価をしている。:-)


いや,ほんと。ゼロベースでbuild.xml作るくらいならNetBeansのプロジェクトに取り込んで,NetBeansが生成したbuild.xml使った方がすごく楽だよ。