Add function to return if all tests in a suite passed

pull/579/head
Esdras Beleza de Noronha 2020-03-08 23:37:38 +00:00 committed by Boyan Soubachov
parent f37e428318
commit 961bfee4b1
4 changed files with 40 additions and 8 deletions

View File

@ -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
}

29
suite/stats_test.go Normal file
View File

@ -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())
}

View File

@ -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 {

View File

@ -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)