mirror of
https://github.com/golang/go
synced 2024-11-17 22:54:48 -07:00
testing: only call flag.Parse if it has not been called before
Calling flag.Parse twice can be problematic if other goroutines called flag.Parsed in between: the race detector complains due to the write after read from a different goroutine. This can happen if TestMain calls flag.Parse and launches goroutines that call flag.Parsed, for example if it initializes a server which checks flags. This patch makes testing.M.Run only parse the flags if they have not been parsed already. Change-Id: Id9f8c31c5f90614e3f34c63d1a32cf7e9055d68e Reviewed-on: https://go-review.googlesource.com/16739 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
a9ca2137aa
commit
ab196aeff2
@ -485,7 +485,11 @@ func MainStart(matchString func(pat, str string) (bool, error), tests []Internal
|
||||
|
||||
// Run runs the tests. It returns an exit code to pass to os.Exit.
|
||||
func (m *M) Run() int {
|
||||
flag.Parse()
|
||||
// TestMain may have already called flag.Parse.
|
||||
if !flag.Parsed() {
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
parseCpuList()
|
||||
|
||||
before()
|
||||
|
Loading…
Reference in New Issue
Block a user