diff --git a/test.bash b/test.bash index 4e91b7e..bf47ee3 100755 --- a/test.bash +++ b/test.bash @@ -3,9 +3,22 @@ set -eu cd "$(dirname "$0")" +MYNAME=$(basename "$0") +TESTDIR=/tmp/gocryptfs-test-parent +LOCKFILE=$TESTDIR/$MYNAME.lock -# Clean up dangling filesystem -for i in $(cat /proc/mounts | grep /tmp/gocryptfs-test-parent | cut -f2 -d" "); do +mkdir -p $TESTDIR + +( +# Prevent multiple parallel test.bash instances as this causes +# all kinds of mayham +if ! flock --nonblock 200 ; then + echo "Could not acquire lock on $LOCKFILE - already running?" + exit 1 +fi + +# Clean up dangling filesystems +for i in $(cat /proc/mounts | grep $TESTDIR | cut -f2 -d" "); do echo "Warning: unmounting leftover filesystem: $i" fusermount -u $i done @@ -16,10 +29,12 @@ go test ./... $* # The tests cannot to this themselves as they are run in parallel. # Don't descend into possibly still mounted example filesystems. -rm -Rf --one-file-system /tmp/gocryptfs-test-parent +rm -Rf --one-file-system $TESTDIR if go tool | grep vet > /dev/null ; then go tool vet -all -shadow . else echo "\"go tool vet\" not available - skipping" fi + +) 200> $LOCKFILE