Код выхода скрипта Travis никогда не дает сбой, даже если он должен
Часть сценария моего файла Travis yml, которая выглядит следующим образом:
script:
- ./run_tests.sh
Сам скрипт запускает несколько тестов в Sauce Labs. Если скрипт завершается неудачно из-за неудачных тестов, он по-прежнему завершается с кодом 0, и сборка также продолжается. Почему скрипт не завершается с кодом ошибки, если тест не пройден?
Когда я вывожу код выхода из конца моего файла скрипта, я получаю 0. Когда я вывожу код выхода в файле.travis.yml сразу после команды скрипта, я получаю 1:
echo $?
0
The command "./run_tests.sh" exited with 0.
$ echo $?
1
1 ответ
Я понял, что это потому, что я на самом деле запускаю свои тесты, используя unittest.TextTestRunner, и код выхода из этих тестов всегда равен 0, если вы специально не отлавливаете неудачи тестов и выходите на их основе:
ret = not runner.run(test_suite).wasSuccessful()
sys.exit(ret)