]> Cypherpunks repositories - gostls13.git/commitdiff
build: prevent the entire repo to be wiped out by cgo test scripts
authorDidier Spezia <didier.06@gmail.com>
Sat, 2 Jan 2016 14:26:13 +0000 (14:26 +0000)
committerRuss Cox <rsc@golang.org>
Mon, 4 Jan 2016 19:56:30 +0000 (19:56 +0000)
Following the parallelization of some tests, a race condition can
occur in testcarchive, testshared and testcshared.

In some cases, it can result in the go env GOROOT command returning
corrupted data, which are then passed to a rm command.

Make the shell script more robust by not trusting the result of
the go env GOROOT command. It does not really fix the issue, but
at least prevent the entire repository to be deleted.

Updates #13789

Change-Id: Iaf04a7bd078ed3a82e724e35c4b86e6f756f2a2f
Reviewed-on: https://go-review.googlesource.com/18173
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
misc/cgo/testcshared/test.bash

index 63ceb29cf95f57be8fe3540039ba82e571a8f1a3..162a62d80e7ddfcd18a2458ebc158c3778ab2903 100755 (executable)
@@ -16,6 +16,11 @@ fi
 
 goos=$(go env GOOS)
 goarch=$(go env GOARCH)
+goroot=$(go env GOROOT)
+if [ ! -d "$goroot" ]; then
+       echo 'misc/cgo/testcshared/test.bash cannnot find GOROOT' 1>&2
+       exit 1
+fi
 
 # Directory where cgo headers and outputs will be installed.
 # The installation directory format varies depending on the platform.
@@ -30,10 +35,10 @@ androidpath=/data/local/tmp/testcshared-$$
 function cleanup() {
        rm -f libgo.$libext libgo2.$libext libgo4.$libext libgo.h libgo4.h
        rm -f testp testp2 testp3 testp4
-       rm -rf pkg $(go env GOROOT)/${installdir}
+       rm -rf pkg "${goroot}/${installdir}"
 
        if [ "$goos" == "android" ]; then
-               adb shell rm -rf $androidpath
+               adb shell rm -rf "$androidpath"
        fi
 }
 trap cleanup EXIT