-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Closed
Milestone
Description
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.