blob: 43cee565a19c1e5a5819826ef34becd3de8c7564 [file] [log] [blame]
[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)
}