Zatwierdź git tylko, jeśli testy się powiodą
Ostatnio zacząłem używać git, a także rozpocząłem testy jednostkowe (używając Pythonaunittest
moduł). Chciałbym uruchamiać moje testy za każdym razem, gdy popełniam błąd, i zatwierdzam tylko, jeśli przejdą.
Zgaduję, że muszę użyćpre-commit
w/hooks
i udało mi się uruchomić testy, ale nie mogę znaleźć sposobu na zatrzymanie zatwierdzenia, jeśli testy się nie powiodą. Przeprowadzam testy zmake test
, który z kolei działapython3.1 foo.py --test
. Wygląda na to, że nie dostaję innego warunku wyjścia, niezależnie od tego, czy testy zdadzą, czy nie, ale mogę szukać w niewłaściwym miejscu.
Edytować: Czy to coś niezwykłego, co chcę tutaj zrobić? Myślałem, że to powszechny wymóg ...
Edit2: Na wypadek gdyby ludzie nie mogli się przejmować czytaniem komentarzy, problem polegał na tymunittest.TextTestRunner
nie wychodzi z niezerowym statusem, bez względu na to, czy pakiet testowy powiódł się, czy nie. Aby to złapać, zrobiłem:
result = runner.run(allTests)
if not result.wasSuccessful():
sys.exit(1)