| [short] skip |
| |
| # In package list mode, output is buffered. |
| # Check that a newline is printed after the buffer's contents. |
| cd fail |
| ! go test . |
| ! stderr . |
| stdout '^exitcode=1\n' |
| stdout '^FAIL\s+example/fail' |
| |
| # In local directory mode output is streamed, so we don't know |
| # whether the test printed anything at all, so we print the exit code |
| # (just in case it failed without emitting any output at all), |
| # and that happens to add the needed newline as well. |
| ! go test |
| ! stderr . |
| stdout '^exitcode=1exit status 1\n' |
| stdout '^FAIL\s+example/fail' |
| |
| # In package list mode, if the test passes the 'ok' message appears |
| # on its own line. |
| cd ../skip |
| go test -v . |
| ! stderr . |
| stdout '^skipping\n' |
| stdout '^ok\s+example/skip' |
| |
| # If the output is streamed and the test passes, we can't tell whether it ended |
| # in a partial line, and don't want to emit any extra output in the |
| # overwhelmingly common case that it did not. |
| # (In theory we could hook the 'os' package to report whether output |
| # was emitted and whether it ended in a newline, but that seems too invasive.) |
| go test |
| ! stderr . |
| stdout '^skippingok\s+example/skip' |
| |
| |
| -- go.mod -- |
| module example |
| |
| go 1.18 |
| -- fail/fail_test.go -- |
| package fail |
| |
| import ( |
| "os" |
| "testing" |
| ) |
| |
| func TestMain(m *testing.M) { |
| os.Stderr.WriteString("exitcode=1") |
| os.Exit(1) |
| } |
| -- skip/skip_test.go -- |
| package skip |
| |
| import ( |
| "os" |
| "testing" |
| ) |
| |
| func TestMain(m *testing.M) { |
| os.Stderr.WriteString("skipping") |
| os.Exit(0) |
| } |