2017-04-06 3 views
0

다음과 같습니다 내 트래비스 YML 파일의 스크립트 부분 :트래비스 스크립트 종료 코드는 결코 실패하지 않는다하더라도 그것을해야

script: 
- ./run_tests.sh 

스크립트 자체가 소스 랩에 대한 몇 가지 테스트를 실행합니다. 테스트 실패로 인해 스크립트가 실패하면 코드는 여전히 0으로 종료되고 빌드는 계속 전달됩니다. 테스트가 실패하면 스크립트가 실패 코드로 종료하지 않는 이유는 무엇입니까?

내가, 내가 일을 즉시 스크립트 명령 후 .travis.yml 파일의 종료 코드를 얻을 출력 할 때 내가, 내가 0을 내 스크립트 파일의 끝에서 종료 코드를 얻을 출력 :

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

당신이를 '-e' bash 옵션을 사용하여 runnig 스크립트를 시도 했습니까? 스크립트 내의 명령이! = 0을 반환하면 즉시 종료되어야합니다. https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html – odradek

+0

여전히 동일한 종료 코드를 반환합니다. ; run_tests.sh 테스트가 if 문에서 실행된다는 사실에 영향을 받을지 궁금합니다. – danielle

+0

예, 실제로 if (if ; then etc ...) 내에서 조건으로 실행되는 종료 코드 1을 반환하는 문은 false로 평가되고'-e' 옵션은 그것에 따라 행동하십시오. 나는 당신이'else' 절을 어떻게 다룰 지 모르지만 거기에'exit 1 '을 추가하고 어떤 일이 일어날지를 볼 수 있습니다. – odradek

답변

1

나는 실제로 unittest.TextTestRunner를 사용하여 내 테스트를 실행하는거야 때문이었다 실현, 그리고 특별히 그들을 기반으로 테스트 실패하고 종료 잡을하지 않는 한 이러한 테스트의 종료 코드는 항상 0 :

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

여기서 '하지 않는'것은 무엇입니까? 나는 이것을 시도했지만 실패한 테스트에 대한 정확한 값을보고하지 않았다. – user5359531