Skip to content

Commit

Permalink
Merge pull request #1535 from arjunmahishi/fix-suit-deadlock
Browse files Browse the repository at this point in the history
suite: fix deadlock in suite.Require()/Assert()
  • Loading branch information
brackendawson committed Feb 18, 2024
2 parents c719de3 + c41592b commit 14ffa90
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
4 changes: 2 additions & 2 deletions suite/suite.go
Expand Up @@ -58,7 +58,7 @@ func (suite *Suite) Require() *require.Assertions {
suite.mu.Lock()
defer suite.mu.Unlock()
if suite.require == nil {
suite.require = require.New(suite.T())
panic("'Require' must not be called before 'Run' or 'SetT'")
}
return suite.require
}
Expand All @@ -72,7 +72,7 @@ func (suite *Suite) Assert() *assert.Assertions {
suite.mu.Lock()
defer suite.mu.Unlock()
if suite.Assertions == nil {
suite.Assertions = assert.New(suite.T())
panic("'Assert' must not be called before 'Run' or 'SetT'")
}
return suite.Assertions
}
Expand Down
24 changes: 24 additions & 0 deletions suite/suite_test.go
Expand Up @@ -692,3 +692,27 @@ func TestSubtestPanic(t *testing.T) {
assert.True(t, suite.inTearDownTest)
assert.True(t, suite.inTearDownSuite)
}

type unInitialisedSuite struct {
Suite
}

// TestUnInitialisedSuites asserts the behaviour of the suite methods when the
// suite is not initialised
func TestUnInitialisedSuites(t *testing.T) {
t.Run("should panic on Require", func(t *testing.T) {
suite := new(unInitialisedSuite)

assert.Panics(t, func() {
suite.Require().True(true)
})
})

t.Run("should panic on Assert", func(t *testing.T) {
suite := new(unInitialisedSuite)

assert.Panics(t, func() {
suite.Assert().True(true)
})
})
}

0 comments on commit 14ffa90

Please sign in to comment.