Jenkins で自動ビルドして自動テストするわけですが、Ut Video Codec Suite は Windows 版は x86 版と x64 版の2つがあるので、それぞれを別の実行ファイルでテストする必要があります。

最初、何も考えずに、x86 用のテストと x64 用のテストを別個の「Windowsバッチコマンドの実行」で書いておいたら、x86 のテストが失敗した(失敗するテストケースが1つ以上ある)時に、x64 のテストが実行されなくなってしまいました。テストプログラムは失敗すると exit code を nonzero にするので、確かにそうなります。

ただ、実際には以下の動作を期待したいところです。

  • テストの成否にかかわらず、x86 のテストも x64 のテストも実行されて欲しい。
  • いずれかのテストが失敗したら、ビルド失敗として報告する。全てのテストが成功したら、ビルド成功として報告する。

結果として、以下のような1つの「Windowsバッチコマンドの実行」を書きました。

chcp 65001
Release\tests.exe --log_format=XML --log_sink=tests-x86.xml --log_level=all
set ERRLVL86=%ERRORLEVEL%
x64\Release\tests.exe --log_format=XML --log_sink=tests-x64.xml --log_level=all
set ERRLVL64=%ERRORLEVEL%

if "%ERRLVL86%" NEQ "0" goto errexit
if "%ERRLVL64%" NEQ "0" goto errexit
exit /b 0

:errexit
exit /b 1

あまりかっこよくはありませんが…

なお、テストの成否にかかわらずビルド成功として報告する場合は上よりはるかに単純になりますが、テストが失敗したのにビルドが成功と報告するとテスト失敗を見落とすことになるので、すべきではないと思われます。

Trackback

no comment untill now

Add your comment now