diff --git a/suite/stats.go b/suite/stats.go index df52b10f9..261da37f7 100644 --- a/suite/stats.go +++ b/suite/stats.go @@ -5,7 +5,6 @@ import "time" // SuiteInformation stats stores stats for the whole suite execution. type SuiteInformation struct { Start, End time.Time - Passed bool TestStats map[string]*TestInformation } @@ -21,7 +20,6 @@ func newSuiteInformation() *SuiteInformation { return &SuiteInformation{ TestStats: testStats, - Passed: true, } } @@ -36,3 +34,13 @@ func (s SuiteInformation) end(testName string, passed bool) { s.TestStats[testName].End = time.Now() s.TestStats[testName].Passed = passed } + +func (s SuiteInformation) Passed() bool { + for _, stats := range s.TestStats { + if !stats.Passed { + return false + } + } + + return true +} diff --git a/suite/stats_test.go b/suite/stats_test.go new file mode 100644 index 000000000..4446a6d64 --- /dev/null +++ b/suite/stats_test.go @@ -0,0 +1,29 @@ +package suite + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestPassedReturnsTrueWhenAllTestsPass(t *testing.T) { + sinfo := newSuiteInformation() + sinfo.TestStats = map[string]*TestInformation{ + "Test1": {TestName: "Test1", Passed: true}, + "Test2": {TestName: "Test2", Passed: true}, + "Test3": {TestName: "Test3", Passed: true}, + } + + assert.True(t, sinfo.Passed()) +} + +func TestPassedReturnsFalseWhenSomeTestFails(t *testing.T) { + sinfo := newSuiteInformation() + sinfo.TestStats = map[string]*TestInformation{ + "Test1": {TestName: "Test1", Passed: true}, + "Test2": {TestName: "Test2", Passed: false}, + "Test3": {TestName: "Test3", Passed: true}, + } + + assert.False(t, sinfo.Passed()) +} diff --git a/suite/suite.go b/suite/suite.go index 87fbe79ff..cdaf9a9f9 100644 --- a/suite/suite.go +++ b/suite/suite.go @@ -156,12 +156,7 @@ func Run(t *testing.T, suite TestingSuite) { defer func() { if stats != nil { passed := !t.Failed() - stats.end(method.Name, passed) - - if !passed { - stats.Passed = false - } } if afterTestSuite, ok := suite.(AfterTest); ok { diff --git a/suite/suite_test.go b/suite/suite_test.go index 9da9223d0..8b698a052 100644 --- a/suite/suite_test.go +++ b/suite/suite_test.go @@ -505,7 +505,7 @@ func TestSuiteWithStats(t *testing.T) { assert.True(t, suiteWithStats.wasCalled) assert.NotZero(t, suiteWithStats.stats.Start) assert.NotZero(t, suiteWithStats.stats.End) - assert.True(t, suiteWithStats.stats.Passed) + assert.True(t, suiteWithStats.stats.Passed()) testStats := suiteWithStats.stats.TestStats["TestSomething"] assert.NotZero(t, testStats.Start)