2017-04-06 1 views
0

Das Skript Teil meiner Travis yml Datei, die wie folgt aussieht:Travis Skript Exit-Code nie versagt, auch wenn es sollte

script: 
- ./run_tests.sh 

Das Skript selbst macht einige Tests auf Sauce Labs. Wenn das Skript aufgrund von Testfehlern fehlschlägt, wird es immer noch mit Code 0 beendet und der Build wird ebenfalls fortgesetzt. Warum wird das Skript nicht mit einem Fehlercode beendet, wenn ein Test fehlschlägt?

Wenn ich Ausgang den Exit-Code aus dem Ende meiner Skriptdatei, ich 0, wenn ich den Exit-Code in der .travis.yml Datei unmittelbar nach dem Script-Befehl ausgegeben, I 1 erhalten:

echo $? 
0 
The command "./run_tests.sh" exited with 0. 
$ echo $? 
1 
+0

Sie haben versucht Runnig Skript mit '-e' Bash Option? Es sollte sofort beendet werden, wenn ein Befehl innerhalb des Skripts den Status! = 0 zurückgibt. Siehe: https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html – odradek

+0

Es gibt immer noch dieselben Beendigungscodes zurück ; Ich frage mich, ob es von der Tatsache betroffen sein könnte, dass die run_tests.sh-Tests innerhalb einer if-Anweisung ausgeführt werden. – danielle

+0

Yep, tatsächlich tut es, wenn ein Prozess Exit-Code 1 als Bedingung in einem if ('if ; dann etc ...') läuft, wird die Anweisung nur zu false ausgewertet und '-e' Option wird nicht handeln Sie danach. Ich weiß nicht, wie Sie mit der 'else'-Klausel umgehen, aber Sie könnten versuchen, dort eine 'exit 1' hinzuzufügen und zu sehen, was passiert. – odradek

Antwort

1

ich erkannte dies war, weil ich eigentlich bin meine Tests unittest.TextTestRunner mit ausgeführt wird, und der Exit-Code aus diesen Tests ist immer 0, wenn Sie speziell die Testfehler und verlassen sich darauf beziehenden fangen:

ret = not runner.run(test_suite).wasSuccessful() 
sys.exit(ret) 
+0

Was macht das hier nicht? Ich habe das versucht, aber es meldet nicht den richtigen Wert für fehlgeschlagene Tests. – user5359531

Verwandte Themen