#!/usr/bin/env bash # Copyright 2013 The Go Authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. # race.bash tests the standard library under the race detector. # http://golang.org/doc/articles/race_detector.html set -e function usage { echo 'race detector is only supported on linux/amd64, freebsd/amd64 and darwin/amd64' 1>&2 exit 1 } case $(uname) in "Darwin") # why Apple? why? if sysctl machdep.cpu.extfeatures | grep -qv EM64T; then usage fi ;; "Linux") if [ $(uname -m) != "x86_64" ]; then usage fi ;; "FreeBSD") if [ $(uname -m) != "amd64" ]; then usage fi ;; *) usage ;; esac if [ ! -f make.bash ]; then echo 'race.bash must be run from $GOROOT/src' 1>&2 exit 1 fi . ./make.bash --no-banner # golang.org/issue/5537 - we must build a race enabled cmd/cgo before trying to use it. go install -race cmd/cgo go install -race std # we must unset GOROOT_FINAL before tests, because runtime/debug requires # correct access to source code, so if we have GOROOT_FINAL in effect, # at least runtime/debug test will fail. unset GOROOT_FINAL go test -race -short std go test -race -run=nothingplease -bench=.* -benchtime=.1s -cpu=4 std