2017-01-08 8 views
0

私は、次のappveyor.ymlファイルました:forfilesを使用しているときにコマンドエラーが発生した場合のCIスクリプトの失敗方法

test_script: 
- forfiles /m *.mqh /c "mql /s @path" 
build: off 
platform: x86 

カレントディレクトリにあるすべてのソースコードファイルの構文(/s)を確認することを目指しています。

コンパイラのエラーにもかかわらず、最終的な結果はとして報告されます。ビルドの成功

上記の方法を使用してテストスクリプトに失敗するにはどうすればよいですか?


Linuxでset -eと似たようなものがあります。コンパイラは、Linux上でwineを使用するとうまく動作するため、期待どおりに終了時に1つのエラーを返します。しかし、ビルドスクリプト全体が期待通りに失敗するわけではありません。

答えて

1

AppVeyor幸せなのは、コマンドのリターンコードが0なので、私は最後の繰り返しがうまくいっていたのでリターンコードが0だと思います。あなたも、より深いカバレッジを取得するためにGet-ChildItem -RecurseGet-ChildItemを変更することができます

test_script: - ps: $mqlScriptSuccess = $true - ps: Get-ChildItem | ForEach-Object {if ($_.Name.EndsWith(".mqh")){.\mql /s /mql$env:ver $_.FullName; if(!$?){$mqlScriptSuccess = $?; Write-Warning "mlq error"}}} - ps: if (!$mqlScriptSuccess) {throw "At least one mql test failed"}

注:それは少なくとも一回の反復がforfilesで失敗しましたが、PowerShellを使用し、これは動作するはずの場合には、私はそれがエラーを返すようにする方法を確認していません。

関連する問題