@@ -5,13 +5,44 @@ set -eu
55script_dir=$( cd " $( dirname " $0 " ) " ; pwd -P )
66cd " ${script_dir} /.." # move to project root dir
77
8- unformatted_files=$( gofmt -l .)
9- if [[ ${unformatted_files} ]]; then
10- echo " Some files are not formatted properly. You can use \` gofmt -l -w .\` to fix them:"
11- printf " %s\n" " ${unformatted_files} "
12- exit 1
8+ go_version=$( go version)
9+ echo $go_version
10+ if [[ $go_version == * go1.17.* ]]; then # Keep in sync with our CI gatekeeper job; TODO update to latest
11+ # gofmt is version specific, so only run this for our reference version for development
12+ echo " Reference Go version found for gofmt; checking source format..."
13+ echo " ******** Testing: gofmt ********"
14+ unformatted_files=$( gofmt -l .)
15+ if [[ ${unformatted_files} ]]; then
16+ echo " Some files are not formatted properly. You can use \` gofmt -l -w .\` to fix them:"
17+ printf " %s\n" " ${unformatted_files} "
18+ exit 1
19+ fi
20+ else
21+ echo " The found Go version is not our reference for gofmt; skipping source format check"
1322fi
1423
15- go vet ./...
24+ echo " ******** Testing: go vet ********"
25+ set +e
26+ go_vet_result=$( go 2>&1 vet ./...)
27+ go_vet_rc=$?
28+ set -e
1629
30+ echo " $go_vet_result "
31+ go_vet_result_lines=$( echo " $go_vet_result " | wc -l)
32+ if [ $go_vet_rc -ne 0 ]; then
33+ if [[ $go_vet_result_lines == 2 && $go_vet_result == * objectbox/c-callbacks.go* possible\ misuse\ of\ unsafe.Pointer* ]]; then
34+ echo " Ignoring known false positive of go vet"
35+ go_vet_rc=0
36+ else
37+ echo " go vet failed ($go_vet_rc )"
38+ # Fail later because we want to run tests for now too; was: exit $go_vet_rc
39+ fi
40+ fi
41+
42+ echo " ******** Testing: go test ********"
1743go test " $@ " ./...
44+
45+ if [ $go_vet_rc -ne 0 ]; then
46+ echo " go vet failed ($go_vet_rc )"
47+ exit $go_vet_rc
48+ fi
0 commit comments