Записывать в 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)

Ответы на вопрос(3)

Ваш ответ на вопрос