test.bash, crossbuild: catch MacOS test build failures

Regression test for https://github.com/rfjakob/gocryptfs/issues/623

Fixes https://github.com/rfjakob/gocryptfs/issues/623
This commit is contained in:
Jakob Unterwurzacher 2021-12-08 18:53:15 +01:00
parent ec186c13ce
commit a48d6c3041
2 changed files with 16 additions and 2 deletions

View File

@ -7,9 +7,13 @@ function build {
go build -tags without_openssl -o /dev/null
}
set -eux
function compile_tests {
for i in $(go list ./...) ; do
go test -c -tags without_openssl -o /dev/null "$i" > /dev/null
done
}
cd "$(dirname "$0")"
set -eux
export GO111MODULE=on
export CGO_ENABLED=0
@ -22,6 +26,8 @@ GOOS=linux GOARCH=arm64 build
# MacOS on Intel
GOOS=darwin GOARCH=amd64 build
# Catch tests that don't work on MacOS (takes a long time so we only run it once)
time GOOS=darwin GOARCH=amd64 compile_tests
# MacOS on Apple Silicon M1.
# Go 1.16 added support for the M1 and added ios/arm64,

View File

@ -93,4 +93,12 @@ if find . -type f -name \*.go -print0 | xargs -0 grep -E 'syscall.(Setegid|Seteu
exit 1
fi
if find . -type f -name \*.go -print0 | xargs -0 grep '\.Creat('; then
# MacOS does not have syscall.Creat(). Creat() is equivalent to Open(..., O_CREAT|O_WRONLY|O_TRUNC, ...),
# but usually you want O_EXCL instead of O_TRUNC because it is safer, so that's what we suggest
# instead.
echo "$MYNAME: Please use Open(..., O_CREAT|O_WRONLY|O_EXCL, ...) instead of Creat()! https://github.com/rfjakob/gocryptfs/issues/623"
exit 1
fi
) 200> "$LOCKFILE"