]> Cypherpunks.ru repositories - gostls13.git/commitdiff
testing: quote -test.v=test2json output when logging it
authorBryan C. Mills <bcmills@google.com>
Thu, 23 Mar 2023 19:17:50 +0000 (15:17 -0400)
committerGopher Robot <gobot@golang.org>
Thu, 23 Mar 2023 19:50:22 +0000 (19:50 +0000)
The -test.v=test2json flag causes the testing package to inject extra
control characters in the output to allow the JSON parser to more
gracefully handle extraneous writes to os.Stdout and/or os.Stderr in
the package under test (see CL 443596). However, it doesn't filter out
those control characters because almost no real-world tests will
output them.

It turns out that testing.TestFlag is one of the rare tests that does
output those control characters, because it tests the
-test.v=test2json flag itself.

Fixes #59181.

Change-Id: I35ca6748afcd3d4333563028817caac946f5e86a
Reviewed-on: https://go-review.googlesource.com/c/go/+/479035
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>

src/testing/flag_test.go

index 483ae6530d943a68bf4a999b981f90005c2c019b..416d8c986245423eeb07137e8d473b682daf8dd0 100644 (file)
@@ -39,7 +39,10 @@ func TestFlag(t *testing.T) {
                        cmd.Env = append(cmd.Environ(), flagTestEnv+"=1")
                        b, err := cmd.CombinedOutput()
                        if len(b) > 0 {
-                               t.Logf("%s", b)
+                               // When we set -test.v=test2json, we need to escape the ^V control
+                               // character used for JSON framing so that the JSON parser doesn't
+                               // misinterpret the subprocess output as output from the parent test.
+                               t.Logf("%q", b)
                        }
                        if err != nil {
                                t.Error(err)