2016-10-30 17 views
0

私は単純なネットコアレポをいくつかのxUnitテストNetCoreXunitでAppveyorとTravisで構築する必要があります。私は失敗したテストを入れてしまって、アプレイヤーはビルドに失敗しますが、私はトラビスに同じことをさせるのに苦労しています。テストをうまく実行し、テストの1つが失敗したがビルドをパスしたことを報告します。ブレークTravis-CI dotnetテストの失敗で

私はグーグルで死んでしまい、yaml設定のスクリプトステップで出力をパイプして解析しようとしましたが、スクリプトの知識はあまり良くありません。

誰かが私がTravisをビルドに失敗させるのを助けることができたら、私は感謝します。 GitHubリポジトリからAppveyorビルドとTravisビルドへのリンクがあります。リポジトリにコミットすると、自動的にビルドする必要があります。

--UPDATE-- 2つのテストアセンブリの出力を解析し、テストの失敗があるかどうかを正確に特定しています。変数を作成して、両方のアセンブリが出口を投げる前にテストされるようにする必要があります。私はこれを得るために愚かなフープを突き抜けなければならなかった。 1つはトラヴィスが不平を言わずに変数を定義することができないということでした。また、ハードコーディングされているだけでなく、すべてのテストアセンブリを見つけるまで拡張したいと思います。

after_success: 
    # Run tests 
    - dotnet test ./src/NetCoreXunit -xml ./out/NetCoreXunit.xml; 
    if grep -q 'result="Fail"' ./out/NetCoreXunit.xml ; then 
     echo 'Failed tests detected.'; 
    else 
     echo 'All tests passed.'; 
    fi; 
    - dotnet test ./src/NetCoreXunitB -xml ./out/NetCoreXunitB.xml; 
    if grep -q 'result="Fail"' ./out/NetCoreXunitB.xml ; then 
     echo 'Failed tests detected.'; 
    else 
     echo 'All tests passed.'; 
    fi; 

何かアドバイスをいただけれ :どのように私は、すべてのテストアセンブリのリストを取得しないと私はどのように宣言すると、私は、その後で終了コードすることができますブール値を設定するのですか?

答えて

0

.travis.ymlを動作させるのに長い時間を費やしました。 Pythonのルートをまっすぐに下っているはずです。次のようにymlから呼び出されます。

import os 
import sys 
import re 
from subprocess import call 

root_directory = os.getcwd() 
print (root_directory) 

regexp = re.compile(r'src[\/\\]NetCoreXunit.?$') 
result = False 
for child in os.walk(root_directory): 
    print (child[0]) 
    if regexp.search(child[0]) is not None: 
     print ("Matched") 
     test_path = os.path.join(root_directory, child[0]) 
     if os.path.isdir(test_path): 
      print ("IsDir") 
      print (test_path) 
      os.chdir(test_path) 
      call (["dotnet", "test", "-xml", "output.xml"]) 
      if 'result="Fail"' in open("output.xml").read(): 
       print (test_path + ": Failed tests detected") 
       result = True 
      else: 
       print (test_path + ": All tests passed") 

os.chdir(root_directory) 

if result: 
    print ("Failed tests detected") 
    sys.exit(1) 
関連する問題