From 961bfee4b1ca67db16c01bc85e6682806b99505e Mon Sep 17 00:00:00 2001 From: Esdras Beleza de Noronha Date: Sun, 8 Mar 2020 23:37:38 +0000 Subject: [PATCH] Add function to return if all tests in a suite passed --- suite/stats.go | 12 ++++++++++-- suite/stats_test.go | 29 +++++++++++++++++++++++++++++ suite/suite.go | 5 ----- suite/suite_test.go | 2 +- 4 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 suite/stats_test.go diff --git a/suite/stats.go b/suite/stats.go index df52b10..261da37 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 0000000..4446a6d --- /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 87fbe79..cdaf9a9 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 9da9223..8b698a0 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)