Skip to content

testing: confusing failures when t.Error called after test has returned #15654

Description

@neild

Pre-1.7, calling t.Error after a Test function returned had no effect. Now it causes the test suite to fail, but (confusingly) the cause of the failure isn't reported in any way.

package t_test

import (
        "testing"
        "time"
)

func TestA(t *testing.T) {
        go func() {
                time.Sleep(10 * time.Millisecond)
                t.Errorf("failed after success")
        }()
}

func TestB(t *testing.T) {
        time.Sleep(1 * time.Second)
}
$ go version
go version go1.6 linux/amd64
$ go test . -test.v
=== RUN   TestA
--- PASS: TestA (0.00s)
=== RUN   TestB
--- PASS: TestB (1.00s)
PASS
ok      _/usr/local/google/home/dneil/src/testex        1.022s
$ ~/go/bin/go version
go version devel +15285d4 Wed Apr 27 11:08:58 2016 -0700 linux/amd64
$ ~/go/bin/go test . -test.v
=== RUN   TestA
--- PASS: TestA (0.00s)
=== RUN   TestB
--- PASS: TestB (1.00s)
FAIL
exit status 1
FAIL    _/usr/local/google/home/dneil/src/testex        1.013s

The test is clearly at fault, so this becoming a failure isn't a problem at all. However, it's not at all obvious why the test has failed; every test passes and then the test run fails inexplicably.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions