You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
testing: testlog kills tests that call m.Run multiple times #23129
After fixing #23047, running the influxdb tests turned up a failure caused by github.com/influxdata/influxdb/tests/server_test.go, which (surprise!) runs m.Run in a loop during TestMain:
func TestMain(m *testing.M) {
var r int
for _, indexType = range tsdb.RegisteredIndexes() {
... setup ...
// Run test suite.
if testing.Verbose() {
fmt.Printf("============= Running all tests for %q index =============\n", indexType)
}
if thisr := m.Run(); r == 0 {
r = thisr // We'll always remember the first time r is non-zero
}
... cleanup ...
}
os.Exit(r)
}
This only barely works today. Flags like -test.cpuprofile overwrite the output on each iteration, so that the profile applies only to the last iteration. But it doesn't crash in Go 1.9. Now it crashes, because the second m.Run calls testlog.SetLogger, and testlog.SetLogger must only be called once.
I guess now we have to support running m.Run multiple times. Sigh.
Activity
bradfitz commentedon Dec 14, 2017
There's no sad face emoji reaction, so ... 😢
gopherbot commentedon Dec 14, 2017
Change https://golang.org/cl/83956 mentions this issue:
testing: do not crash when m.Run is called twice and -test.testlogfile is usedgopherbot commentedon Aug 28, 2020
Change https://golang.org/cl/251262 mentions this issue:
testing: restore os.Exit(0) after every call to (*M).Runtesting: restore os.Exit(0) after every call to (*M).Run