From b32ac54620067dacc793192fb862ddf2e6cd4386 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 4 Jan 2018 13:25:31 -0500 Subject: [PATCH] cmd/test2json: fix test log output containing test output If test case framing appears in ordinary test output, then test2json can get confused. If the fake framing is being saved with t.Logf/t.Errorf/etc then we can already distinguish it from real framing, and the code did. It just forgot to write that framing as output (1-line fix). If the fake framing is being generated by printing directly to stdout/stderr, then test2json will simply get confused. There's not a lot to do at that point (maybe it's even a feature). Fixes #23036. Change-Id: I29449c7ace304172b89d8babe23de507c0500455 Reviewed-on: https://go-review.googlesource.com/86238 Run-TryBot: Russ Cox Reviewed-by: Ian Lance Taylor --- src/cmd/internal/test2json/test2json.go | 1 + src/cmd/internal/test2json/testdata/issue23036.json | 12 ++++++++++++ src/cmd/internal/test2json/testdata/issue23036.test | 9 +++++++++ 3 files changed, 22 insertions(+) create mode 100644 src/cmd/internal/test2json/testdata/issue23036.json create mode 100644 src/cmd/internal/test2json/testdata/issue23036.test diff --git a/src/cmd/internal/test2json/test2json.go b/src/cmd/internal/test2json/test2json.go index 3e09c8d915..a113c2e0ee 100644 --- a/src/cmd/internal/test2json/test2json.go +++ b/src/cmd/internal/test2json/test2json.go @@ -226,6 +226,7 @@ func (c *converter) handleInputLine(line []byte) { if len(c.report) < indent { // Nested deeper than expected. // Treat this line as plain output. + c.output.write(origLine) return } // Flush reports at this indentation level or deeper. diff --git a/src/cmd/internal/test2json/testdata/issue23036.json b/src/cmd/internal/test2json/testdata/issue23036.json new file mode 100644 index 0000000000..935c0c5fc0 --- /dev/null +++ b/src/cmd/internal/test2json/testdata/issue23036.json @@ -0,0 +1,12 @@ +{"Action":"run","Test":"TestActualCase"} +{"Action":"output","Test":"TestActualCase","Output":"=== RUN TestActualCase\n"} +{"Action":"output","Test":"TestActualCase","Output":"--- FAIL: TestActualCase (0.00s)\n"} +{"Action":"output","Test":"TestActualCase","Output":" foo_test.go:14: Differed.\n"} +{"Action":"output","Test":"TestActualCase","Output":" Expected: MyTest:\n"} +{"Action":"output","Test":"TestActualCase","Output":" --- FAIL: Test output from other tool\n"} +{"Action":"output","Test":"TestActualCase","Output":" Actual: not expected\n"} +{"Action":"fail","Test":"TestActualCase"} +{"Action":"output","Output":"FAIL\n"} +{"Action":"output","Output":"exit status 1\n"} +{"Action":"output","Output":"FAIL github.com/org/project/badtest 0.049s\n"} +{"Action":"fail"} diff --git a/src/cmd/internal/test2json/testdata/issue23036.test b/src/cmd/internal/test2json/testdata/issue23036.test new file mode 100644 index 0000000000..fd4774f4b6 --- /dev/null +++ b/src/cmd/internal/test2json/testdata/issue23036.test @@ -0,0 +1,9 @@ +=== RUN TestActualCase +--- FAIL: TestActualCase (0.00s) + foo_test.go:14: Differed. + Expected: MyTest: + --- FAIL: Test output from other tool + Actual: not expected +FAIL +exit status 1 +FAIL github.com/org/project/badtest 0.049s -- 2.48.1