Код выхода скрипта 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)
Другие вопросы по тегам