aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Martí <mvdan@mvdan.cc>2018-03-03 19:53:53 +0000
committerAndrew Bonventre <andybons@golang.org>2018-04-27 20:52:45 +0000
commitf26ed07f53daf19b33e13b3a93f185320d7b9a8b (patch)
treefb928c435c8c5ae8f87bf4271223ff640690e219
parent5b6ff694bbc867f4ae95fdc624fb1f4511e5623e (diff)
downloadgo-f26ed07f53daf19b33e13b3a93f185320d7b9a8b.tar.gz
go-f26ed07f53daf19b33e13b3a93f185320d7b9a8b.zip
[release-branch.go1.10] cmd/internal/test2json: support subtests containing colons
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>
-rw-r--r--src/cmd/internal/test2json/test2json.go7
-rw-r--r--src/cmd/internal/test2json/testdata/issue23920.json14
-rw-r--r--src/cmd/internal/test2json/testdata/issue23920.test7
3 files changed, 27 insertions, 1 deletions
diff --git a/src/cmd/internal/test2json/test2json.go b/src/cmd/internal/test2json/test2json.go
index 483fb1de52..f8052136be 100644
--- a/src/cmd/internal/test2json/test2json.go
+++ b/src/cmd/internal/test2json/test2json.go
@@ -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
index 0000000000..28f7bd56ac
--- /dev/null
+++ b/src/cmd/internal/test2json/testdata/issue23920.json
@@ -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
index 0000000000..43bf058034
--- /dev/null
+++ b/src/cmd/internal/test2json/testdata/issue23920.test
@@ -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