2016-10-30 3 views
0

Proof of Concept Ich habe ein einfaches Netcore-Repo mit einigen xUnit-Tests unter NetCoreXunit, die ich sowohl auf Appveyor als auch auf Travis aufbauen muss. Ich habe einen versagenden Test abgelegt und Appveyor scheitert am Build, aber ich bemühe mich, Travis dazu zu bringen, dasselbe zu tun. Es führt die Tests glücklich aus und meldet, dass einer der Tests fehlschlägt, aber den Build übergibt.Break Travis-CI baut auf Dotnet-Testfehler

Ich habe zu Tode gegooglet und versucht, die Ausgabe in einem Script-Schritt in der Yaml-Konfiguration zu pipettieren und zu analysieren, aber meine Skriptkenntnisse sind nicht großartig.

Wenn mir jemand helfen könnte, Travis zum Scheitern zu bringen, wäre ich dankbar. Es gibt einen Link vom GitHub-Repository zu meinen Appveyor- und Travis-Builds. Wenn Sie sich für das Repo-Repository entscheiden, sollte es automatisch erstellt werden.

--UPDATE-- So habe ich es soweit Parsing die Ausgabe von zwei Test-Baugruppen und richtig zu identifizieren, wenn ein Test fehlgeschlagen ist; aber ich muss eine Variable erstellen, damit beide Baugruppen getestet werden, bevor sie den Ausgang werfen. Ich musste durch dumme Reifen springen, um so weit zu kommen; und eine war, dass ich eine Variable nicht definieren kann, ohne dass sich Travis beschwert. Es ist auch hardcoded und ich würde es gerne auf alle Test Assemblies erweitern, nicht nur auf die Hardcodiert.

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; 

Jede Beratung schätzen: Wie bekomme ich eine Liste aller Testanordnungen und wie kann ich erklären und ein Bool gesetzt, dass ich mit dann Exit-Code kann?

Antwort

0

Verbrachten Weg zu lange versuchen zu bekommen .travis.yml zu arbeiten; hätte einfach die Python-Route runter gehen sollen; funktioniert wie folgt aus dem Yml heraus.

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)