I've recently started using git, and also begun unit testing (using Python's unittest
module). I'd like to run my tests each time I commit, and only commit if they pass.
I'm guessing I need to use pre-commit
in /hooks
, and I've managed to make it run the tests, but I can't seem to find a way to stop the commit if they tests fail. I'm running the tests with make test
, which in turn is running python3.1 foo.py --test
. It seems like I don't get a different exit condition whether the tests pass or fail, but I may be looking in the wrong place.
Edit: Is this something uncommon that I want to do here? I would have thought it was a common requirement...
Edit2: Just in case people can't be bothered to read the comments, the problem was that unittest.TextTestRunner
doesn't exit with non-zero status, whether the test suite is successful or not. To catch it, I did:
result = runner.run(allTests)
if not result.wasSuccessful():
sys.exit(1)