| :: 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 |
| |
| @echo off |
| |
| setlocal |
| |
| if exist make.bat goto ok |
| echo race.bat must be run from go\src |
| :: cannot exit: would kill parent command interpreter |
| goto end |
| :ok |
| |
| set GOROOT=%CD%\.. |
| call make.bat --dist-tool >NUL |
| if errorlevel 1 goto fail |
| .\cmd\dist\dist env -wp >env.bat |
| if errorlevel 1 goto fail |
| call env.bat |
| del env.bat |
| |
| if %GOHOSTARCH% == amd64 goto continue |
| echo Race detector is only supported on windows/amd64. |
| goto fail |
| |
| :continue |
| call make.bat --no-banner --no-local |
| if %GOBUILDFAIL%==1 goto end |
| :: golang.org/issue/5537 - we must build a race enabled cmd/cgo before trying to use it. |
| echo # go install -race cmd/cgo |
| go install -race cmd/cgo |
| echo # go install -race std |
| go install -race std |
| if errorlevel 1 goto fail |
| |
| :: 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. |
| set GOROOT_FINAL= |
| |
| echo # go test -race -short std |
| go test -race -short std |
| if errorlevel 1 goto fail |
| echo # go test -race -run=nothingplease -bench=.* -benchtime=.1s -cpu=4 std |
| go test -race -run=nothingplease -bench=.* -benchtime=.1s -cpu=4 std |
| if errorlevel 1 goto fail |
| goto succ |
| |
| :fail |
| set GOBUILDFAIL=1 |
| echo Fail. |
| goto end |
| |
| :succ |
| echo All tests passed. |
| |
| :end |
| if x%GOBUILDEXIT%==x1 exit %GOBUILDFAIL% |
| |