aboutsummaryrefslogtreecommitdiff
path: root/test.bash
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-11-26 13:43:50 +0100
committerJakob Unterwurzacher2016-11-26 13:43:50 +0100
commita6006c0d2bcef66cc3c6a6bb22de747b9be874c1 (patch)
tree2142af1e608f00c3280e0cdcb60ebc80e7393cff /test.bash
parent55ea345620ff1b11280512239ef17f63f47b53a5 (diff)
test.bash: lock against multiple parallel incovations
Running multiple test.bash in parallel causes all kinds of mayham.
Diffstat (limited to 'test.bash')
-rwxr-xr-xtest.bash21
1 files changed, 18 insertions, 3 deletions
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