blob: c05a35bf023b35605a593106fff07839bb252d4d [file] [log] [blame]
#!/bin/bash
#
# Copyright (c) 2015 Google Inc.
#
# This is a pre-push hook that does the following before uploading a
# CL for review:
# 1) check that python sources have been formatted with yapf.
# 2) allows the user to run the unit tests.
mydir="$(dirname "$(readlink -m "$0")")"
# This redirects stdin. Make sure to run after stdin has been read.
run_UnitTests() {
save_dir=$(pwd)
status=0
valid=0
# Make sure we can read the stdin from terminal
exec < /dev/tty
while [[ $valid -eq 0 ]] ; do
read -p "Run unit tests? [y/n] " choice
case "$choice" in
n|N ) valid=1 ;;
y|Y ) valid=1; cd crosperf; ./run_tests.sh; status=$? ;
cd $save_dir;;
* ) echo "Must choose y or n."
esac
done
if [[ $status -ne 0 ]]; then
exit $status
fi
}
z40=0000000000000000000000000000000000000000
while IFS=' ' read local_ref local_sha remote_ref remote_sha; do
if [[ "$local_sha" != $z40 ]]; then
if [[ "$remote_sha" == $z40 ]]; then
# New branch, examine commit on top of branch.
range="$local_sha"
else
# Update to existing branch, examine new commits
range="$remote_sha..$local_sha"
fi
all_files="$(git show --pretty="format:" --name-only "${range}")"
# Note that ${all_files} may include files that were deleted. Hence, we
# ignore any complaints about missing files.
IGNORE_MISSING=1 "${mydir}/check-style" ${all_files} || exit 1
fi
done
run_UnitTests
exit 0