diff --git a/pre-commit b/pre-commit new file mode 100755 index 00000000..f7a93aeb --- /dev/null +++ b/pre-commit @@ -0,0 +1,33 @@ +#!/bin/bash + +# This script is a wrapper around the run-tests script. +# It is highly recommended to link it as the git pre-commit hook via: + +# ln -s ../../pre-commit .git/hooks/pre-commit + +# The difference to the run-tests script is that this script stashes +# unstaged changes before testing (see below). Thus only the changeset to be +# commited will be tested. No worries, "git commit -a" will still work ;) +# Stephan Kuschel, 2014 + +# Stash unstaged changes if and only if(!) necessary (=possible): +# if you dont check that you might uninentionally apply an older stash, +# because this if statement just makes sure, that there are changed to +# be stashed on executing "git staph -q --keep-index". Otherwise it coud +# happen, that git stash is executed, but no stash is created, because +# there were no changes, that could be stashed. +if git diff-index --quiet HEAD --; then + #echo "pre-commit hook without stashing" + ./run-tests + exitcode=$? +else + #echo "pre-commit hook with stashing" + git stash -q --keep-index + ./run-tests + exitcode=$? + git stash pop -q +fi + + +exit $exitcode + diff --git a/run-tests b/run-tests new file mode 100755 index 00000000..fa4b5b70 --- /dev/null +++ b/run-tests @@ -0,0 +1,25 @@ +#!/bin/bash + +# run all tests and pep8 changes of this project. + +# For development, please see pre-commit for +# instructions how to add this as a git pre-commit hook. + +# Stephan Kuschel, 2014 + +exitonfailure () { + if [ $1 -ne 0 ]; then + echo '"./run-tests" failed. Aborting.' + exit $1 + fi +} + +# run actual tests +nosetests +exitonfailure $? + +pep8 postpic --statistics --count --show-source --ignore=W391 +exitonfailure $? + +exit 0 +