]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.10] cmd/internal/test2json: support subtests containing colons
authorDaniel Martí <mvdan@mvdan.cc>
Sat, 3 Mar 2018 19:53:53 +0000 (19:53 +0000)
committerAndrew Bonventre <andybons@golang.org>
Fri, 27 Apr 2018 20:52:45 +0000 (20:52 +0000)
The "updates" lines, such as RUN, do not contain a colon. However,
test2json looked for one anyway, meaning that it would be thrown off if
it encountered a line like:

=== RUN   TestWithColons/[::1]

In that case, it must not use the first colon it encounters to separate
the action from the test name.

Fixes golang/go#25027

Change-Id: I82eff23e24b83dae183c0cf9f85fc5f409f51c25
Reviewed-on: https://go-review.googlesource.com/98445
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
(cherry picked from commit 0c5cfec84424bb453ccd270f4b5c439f21ccf617)
Reviewed-on: https://go-review.googlesource.com/110075
Run-TryBot: Andrew Bonventre <andybons@golang.org>

src/cmd/internal/test2json/test2json.go
src/cmd/internal/test2json/testdata/issue23920.json [new file with mode: 0644]
src/cmd/internal/test2json/testdata/issue23920.test [new file with mode: 0644]

index 483fb1de523cf0eee53c096b3beb65fe31b0faf7..f8052136be625025bd47f8e2d771e837c44794e6 100644 (file)
@@ -175,6 +175,7 @@ func (c *converter) handleInputLine(line []byte) {
        // "=== RUN   "
        // "=== PAUSE "
        // "=== CONT  "
+       actionColon := false
        origLine := line
        ok := false
        indent := 0
@@ -196,6 +197,7 @@ func (c *converter) handleInputLine(line []byte) {
                }
                for _, magic := range reports {
                        if bytes.HasPrefix(line, magic) {
+                               actionColon = true
                                ok = true
                                break
                        }
@@ -209,7 +211,10 @@ func (c *converter) handleInputLine(line []byte) {
        }
 
        // Parse out action and test name.
-       i := bytes.IndexByte(line, ':') + 1
+       i := 0
+       if actionColon {
+               i = bytes.IndexByte(line, ':') + 1
+       }
        if i == 0 {
                i = len(updates[0])
        }
diff --git a/src/cmd/internal/test2json/testdata/issue23920.json b/src/cmd/internal/test2json/testdata/issue23920.json
new file mode 100644 (file)
index 0000000..28f7bd5
--- /dev/null
@@ -0,0 +1,14 @@
+{"Action":"run","Test":"TestWithColons"}
+{"Action":"output","Test":"TestWithColons","Output":"=== RUN   TestWithColons\n"}
+{"Action":"run","Test":"TestWithColons/[::1]"}
+{"Action":"output","Test":"TestWithColons/[::1]","Output":"=== RUN   TestWithColons/[::1]\n"}
+{"Action":"run","Test":"TestWithColons/127.0.0.1:0"}
+{"Action":"output","Test":"TestWithColons/127.0.0.1:0","Output":"=== RUN   TestWithColons/127.0.0.1:0\n"}
+{"Action":"output","Test":"TestWithColons","Output":"--- PASS: TestWithColons (0.00s)\n"}
+{"Action":"output","Test":"TestWithColons/[::1]","Output":"    --- PASS: TestWithColons/[::1] (0.00s)\n"}
+{"Action":"pass","Test":"TestWithColons/[::1]"}
+{"Action":"output","Test":"TestWithColons/127.0.0.1:0","Output":"    --- PASS: TestWithColons/127.0.0.1:0 (0.00s)\n"}
+{"Action":"pass","Test":"TestWithColons/127.0.0.1:0"}
+{"Action":"pass","Test":"TestWithColons"}
+{"Action":"output","Output":"PASS\n"}
+{"Action":"pass"}
diff --git a/src/cmd/internal/test2json/testdata/issue23920.test b/src/cmd/internal/test2json/testdata/issue23920.test
new file mode 100644 (file)
index 0000000..43bf058
--- /dev/null
@@ -0,0 +1,7 @@
+=== RUN   TestWithColons
+=== RUN   TestWithColons/[::1]
+=== RUN   TestWithColons/127.0.0.1:0
+--- PASS: TestWithColons (0.00s)
+    --- PASS: TestWithColons/[::1] (0.00s)
+    --- PASS: TestWithColons/127.0.0.1:0 (0.00s)
+PASS