Skip to content

Commit 2fc4e39

Browse files
Merge pull request #1421 from stevenh/fix/suite-test-failures
suite: fix test failures
2 parents 50d5b7e + f222751 commit 2fc4e39

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

suite/suite_test.go

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -604,14 +604,44 @@ func TestFailfastSuite(t *testing.T) {
604604
}},
605605
)
606606
assert.False(t, ok)
607+
var expect []string
607608
if failFast {
608609
// Test A Fails and because we are running with failfast Test B never runs and we proceed straight to TearDownSuite
609-
assert.Equal(t, "SetupSuite;SetupTest;Test A Fails;TearDownTest;TearDownSuite", strings.Join(s.callOrder, ";"))
610+
expect = []string{"SetupSuite", "SetupTest", "Test A Fails", "TearDownTest", "TearDownSuite"}
610611
} else {
611612
// Test A Fails and because we are running without failfast we continue and run Test B and then proceed to TearDownSuite
612-
assert.Equal(t, "SetupSuite;SetupTest;Test A Fails;TearDownTest;SetupTest;Test B Passes;TearDownTest;TearDownSuite", strings.Join(s.callOrder, ";"))
613+
expect = []string{"SetupSuite", "SetupTest", "Test A Fails", "TearDownTest", "SetupTest", "Test B Passes", "TearDownTest", "TearDownSuite"}
613614
}
615+
callOrderAssert(t, expect, s.callOrder)
614616
}
617+
618+
type tHelper interface {
619+
Helper()
620+
}
621+
622+
// callOrderAssert is a help with confirms that asserts that expect
623+
// matches one or more times in callOrder. This makes it compatible
624+
// with go test flag -count=X where X > 1.
625+
func callOrderAssert(t *testing.T, expect, callOrder []string) {
626+
var ti interface{} = t
627+
if h, ok := ti.(tHelper); ok {
628+
h.Helper()
629+
}
630+
631+
callCount := len(callOrder)
632+
expectCount := len(expect)
633+
if callCount > expectCount && callCount%expectCount == 0 {
634+
// Command line flag -count=X where X > 1.
635+
for len(callOrder) >= expectCount {
636+
assert.Equal(t, expect, callOrder[:expectCount])
637+
callOrder = callOrder[expectCount:]
638+
}
639+
return
640+
}
641+
642+
assert.Equal(t, expect, callOrder)
643+
}
644+
615645
func TestFailfastSuiteFailFastOn(t *testing.T) {
616646
// To test this with failfast on (and isolated from other intended test failures in our test suite) we launch it in its own process
617647
cmd := exec.Command("go", "test", "-v", "-race", "-run", "TestFailfastSuite", "-failfast")

0 commit comments

Comments
 (0)