diff options
| author | Joe Tsai <joetsai@digital-static.net> | 2017-01-21 20:07:26 -0800 |
|---|---|---|
| committer | Joe Tsai <thebrokentoaster@gmail.com> | 2017-02-01 19:27:39 +0000 |
| commit | 7f31971f594edbacbdba5407aaee042850fbd220 (patch) | |
| tree | b37a3932156d4d78c42b4a1408153e511618c653 /src/testing/testing.go | |
| parent | 048b8cecc6e74b50205e803ca387ffaa7e9f37fe (diff) | |
| download | go-7f31971f594edbacbdba5407aaee042850fbd220.tar.xz | |
testing: synchronize writes to the root's Writer
Prior to this change it was possible to see interleaved messages:
<<<
=== RUN Test/LongLongLongLongName48
=== RUN Test/LongLon=== RUN Test/LongLongLongLongName50
gLongLongName49
=== RUN Test/LongLongLongLongName51
>>>
This change fixes it such that you see:
<<<
=== RUN Test/LongLongLongLongName48
=== RUN Test/LongLongLongLongName49
=== RUN Test/LongLongLongLongName50
=== RUN Test/LongLongLongLongName51
>>>
Fixes #18741
Change-Id: I2529d724065dc65b3e9eb3d7cbeeda82a2d0cfd4
Reviewed-on: https://go-review.googlesource.com/35556
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
Diffstat (limited to 'src/testing/testing.go')
| -rw-r--r-- | src/testing/testing.go | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/testing/testing.go b/src/testing/testing.go index bd19a31c27..5efbc244fe 100644 --- a/src/testing/testing.go +++ b/src/testing/testing.go @@ -259,7 +259,7 @@ var ( // common holds the elements common between T and B and // captures common methods such as Errorf. type common struct { - mu sync.RWMutex // guards output, failed, and done. + mu sync.RWMutex // guards output, w, failed, and done. output []byte // Output generated by test or benchmark. w io.Writer // For flushToParent. chatty bool // A copy of the chatty flag. @@ -687,7 +687,9 @@ func (t *T) Run(name string, f func(t *T)) bool { root := t.parent for ; root.parent != nil; root = root.parent { } + root.mu.Lock() fmt.Fprintf(root.w, "=== RUN %s\n", t.name) + root.mu.Unlock() } // Instead of reducing the running count of this test before calling the // tRunner and increasing it afterwards, we rely on tRunner keeping the |
