go2xunit
go2xunit copied to clipboard
Support go1.8 `go test -race`
If we have the following test file:
package main
import "testing"
func TestRace(t *testing.T) {
c := make(chan bool)
m := make(map[string]string)
go func() {
m["1"] = "a" // First conflicting access.
c <- true
}()
m["2"] = "b" // Second conflicting access.
<-c
for k, v := range m {
t.Log(k, v)
}
}
Then run
$ go version
go version go1.8beta1 linux/amd64
$ go test -race | go2xunit
error: 37: orphan end test
The go test -race
output is:
==================
WARNING: DATA RACE
Write at 0x00c420076900 by goroutine 7:
runtime.mapassign()
/opt/go1.8/src/runtime/hashmap.go:485 +0x0
_/home/miki/playground/race.TestRace.func1()
/home/miki/playground/race/race_test.go:9 +0x67
Previous write at 0x00c420076900 by goroutine 6:
runtime.mapassign()
/opt/go1.8/src/runtime/hashmap.go:485 +0x0
_/home/miki/playground/race.TestRace()
/home/miki/playground/race/race_test.go:12 +0x103
testing.tRunner()
/opt/go1.8/src/testing/testing.go:679 +0x228
Goroutine 7 (running) created at:
_/home/miki/playground/race.TestRace()
/home/miki/playground/race/race_test.go:11 +0xc1
testing.tRunner()
/opt/go1.8/src/testing/testing.go:679 +0x228
Goroutine 6 (running) created at:
testing.(*T).Run()
/opt/go1.8/src/testing/testing.go:716 +0x53c
testing.runTests.func1()
/opt/go1.8/src/testing/testing.go:900 +0xaa
testing.tRunner()
/opt/go1.8/src/testing/testing.go:679 +0x228
testing.runTests()
/opt/go1.8/src/testing/testing.go:906 +0x4ac
testing.(*M).Run()
/opt/go1.8/src/testing/testing.go:841 +0x1c3
main.main()
_/home/miki/playground/race/_test/_testmain.go:40 +0x20f
==================
--- FAIL: TestRace (0.00s)
race_test.go:15: 2 b
race_test.go:15: 1 a
testing.go:632: race detected during execution of test
FAIL
FAIL _/home/miki/playground/race 0.011s