testify icon indicating copy to clipboard operation
testify copied to clipboard

TearDownSuite (an possibly all trigger methods) not parallel safe

Open jkmpariab opened this issue 3 years ago • 0 comments

package testifysuitedemo

import (
	"testing"

	"github.com/stretchr/testify/suite"
)

type SampleSuite struct {
	suite.Suite
}

func (suite *SampleSuite) SetupSuite() {
	suite.T().Log("setup suite...")
}

func (suite *SampleSuite) TearDownSuite() {
	suite.T().Log("teardown suite...")
}

func TestSampleSuite(t *testing.T) {
	suite.Run(t, &SampleSuite{})
}

func (suite *SampleSuite) SetupTest() {
	suite.T().Log("setup test...")
}

func (suite *SampleSuite) TearDownTest() {
	suite.T().Log("teardown test...")
}

func (suite *SampleSuite) BeforeTest(suiteName, testName string) {
	suite.T().Logf("before test: %q from %q suite...", testName, suiteName)
}

func (suite *SampleSuite) AfterTest(suiteName, testName string) {
	suite.T().Logf("after test: %q from %q suite...", testName, suiteName)
}

//---------------------------------------------------------------------

func (suite *SampleSuite) TestTrue() {
	suite.T().Parallel()
	suite.True(true)
}

func (suite *SampleSuite) TestNoError() {
	suite.T().Parallel()
	suite.NoError(nil)
}

func (suite *SampleSuite) TestEqual() {
	suite.T().Parallel()
	suite.Equal(0, 0)
}

On my machine TearDownSuite fires before other trigger methods:

$ go test -v ./...
=== RUN   TestSampleSuite
    suite_test.go:14: setup suite...
=== RUN   TestSampleSuite/TestEqual
    suite_test.go:26: setup test...
    suite_test.go:34: before test: "TestEqual" from "SampleSuite" suite...
=== PAUSE TestSampleSuite/TestEqual
=== RUN   TestSampleSuite/TestNoError
    suite_test.go:26: setup test...
    suite_test.go:34: before test: "TestNoError" from "SampleSuite" suite...
=== PAUSE TestSampleSuite/TestNoError
=== RUN   TestSampleSuite/TestTrue
    suite_test.go:26: setup test...
    suite_test.go:34: before test: "TestTrue" from "SampleSuite" suite...
=== PAUSE TestSampleSuite/TestTrue
    suite_test.go:18: teardown suite...     <==================================== HERE!!!
=== CONT  TestSampleSuite/TestEqual
=== CONT  TestSampleSuite/TestTrue
    suite_test.go:38: after test: "TestEqual" from "SampleSuite" suite...
    suite_test.go:30: teardown test...
    suite_test.go:38: after test: "TestTrue" from "SampleSuite" suite...
=== CONT  TestSampleSuite
    suite_test.go:30: teardown test...
=== CONT  TestSampleSuite/TestNoError
    suite_test.go:38: after test: "TestNoError" from "SampleSuite" suite...
    suite_test.go:30: teardown test...
--- PASS: TestSampleSuite (0.00s)
    --- PASS: TestSampleSuite/TestEqual (0.00s)
    --- PASS: TestSampleSuite/TestTrue (0.00s)
    --- PASS: TestSampleSuite/TestNoError (0.00s)
PASS
ok      testify-suite-demo      0.007s

jkmpariab avatar Jul 18 '22 13:07 jkmpariab