Записывать в git, только если тесты пройдены
Я недавно начал использовать git, а также начал модульное тестирование (используя Pythonunittest
модуль). Я хотел бы запускать свои тесты каждый раз, когда я фиксирую, и только если они пройдут.
Я думаю, мне нужно использоватьpre-commit
в/hooks
и мне удалось заставить его запускать тесты, но я не могу найти способ остановить фиксацию, если они провалились. Я запускаю тесты сmake test
который в свою очередь работаетpython3.1 foo.py --test
, Кажется, что я не получаю другое условие выхода, независимо от того, пройдены тесты или нет, но я могу искать не в том месте.
Редактировать: Это что-то необычное, что я хочу сделать здесь? Я бы подумал, что это общее требование ...
Edit2: На тот случай, если люди не смогут прочитать комментарии, проблема заключалась в том, чтоunittest.TextTestRunner
не завершается с ненулевым статусом, независимо от того, был ли набор тестов успешным или нет. Чтобы поймать это, я сделал:
result = runner.run(allTests)
if not result.wasSuccessful():
sys.exit(1)