From 0c86b999c35ed199bc7aa001affb1d5d186c9e73 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 14 Jan 2021 12:00:23 -0800 Subject: [PATCH] cmd/test2json: document passing -test.paniconexit0 For #29062 Fixes #43263 Change-Id: I160197c94cc4f936967cc22c82cec01663a14fe6 Reviewed-on: https://go-review.googlesource.com/c/go/+/283873 Trust: Ian Lance Taylor Run-TryBot: Ian Lance Taylor Reviewed-by: Bryan C. Mills TryBot-Result: Go Bot --- src/cmd/go/testdata/script/test_exit.txt | 17 +++++++++++++++++ src/cmd/test2json/main.go | 6 +++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/testdata/script/test_exit.txt b/src/cmd/go/testdata/script/test_exit.txt index 23a2429d1ecaaa..3703ba53d362b0 100644 --- a/src/cmd/go/testdata/script/test_exit.txt +++ b/src/cmd/go/testdata/script/test_exit.txt @@ -54,6 +54,23 @@ go test -list=. ./main_zero stdout 'skipping all tests' ! stdout TestNotListed +# Running the test directly still fails, if we pass the flag. +go test -c -o ./zero.exe ./zero +! exec ./zero.exe -test.paniconexit0 + +# Using -json doesn't affect the exit status. +! go test -json ./zero +! stdout '"Output":"ok' +! stdout 'exit status' +stdout 'panic' +stdout '"Output":"FAIL' + +# Running the test via test2json also fails. +! go tool test2json ./zero.exe -test.v -test.paniconexit0 +! stdout '"Output":"ok' +! stdout 'exit status' +stdout 'panic' + -- go.mod -- module m diff --git a/src/cmd/test2json/main.go b/src/cmd/test2json/main.go index 57a874193e311c..e40881ab3fc1eb 100644 --- a/src/cmd/test2json/main.go +++ b/src/cmd/test2json/main.go @@ -6,7 +6,7 @@ // // Usage: // -// go tool test2json [-p pkg] [-t] [./pkg.test -test.v] +// go tool test2json [-p pkg] [-t] [./pkg.test -test.v [-test.paniconexit0]] // // Test2json runs the given test command and converts its output to JSON; // with no command specified, test2json expects test output on standard input. @@ -18,6 +18,10 @@ // // The -t flag requests that time stamps be added to each test event. // +// The test must be invoked with -test.v. Additionally passing +// -test.paniconexit0 will cause test2json to exit with a non-zero +// status if one of the tests being run calls os.Exit(0). +// // Note that test2json is only intended for converting a single test // binary's output. To convert the output of a "go test" command, // use "go test -json" instead of invoking test2json directly.