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