[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) }