Skip to content

Commit 38fecfc

Browse files
committed
fix(suite): test failures
Fix TestFailfastSuite when run with go test flag -count=X where X greater than 1.
1 parent b747d7c commit 38fecfc

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
@@ -559,14 +559,44 @@ func TestFailfastSuite(t *testing.T) {
559559
}},
560560
)
561561
assert.Equal(t, false, ok)
562+
var expect []string
562563
if failFast {
563564
// Test A Fails and because we are running with failfast Test B never runs and we proceed straight to TearDownSuite
564-
assert.Equal(t, "SetupSuite;SetupTest;Test A Fails;TearDownTest;TearDownSuite", strings.Join(s.callOrder, ";"))
565+
expect = []string{"SetupSuite", "SetupTest", "Test A Fails", "TearDownTest", "TearDownSuite"}
565566
} else {
566567
// Test A Fails and because we are running without failfast we continue and run Test B and then proceed to TearDownSuite
567-
assert.Equal(t, "SetupSuite;SetupTest;Test A Fails;TearDownTest;SetupTest;Test B Passes;TearDownTest;TearDownSuite", strings.Join(s.callOrder, ";"))
568+
expect = []string{"SetupSuite", "SetupTest", "Test A Fails", "TearDownTest", "SetupTest", "Test B Passes", "TearDownTest", "TearDownSuite"}
568569
}
570+
callOrderAssert(t, expect, s.callOrder)
569571
}
572+
573+
type tHelper interface {
574+
Helper()
575+
}
576+
577+
// callOrderAssert is a help with confirms that asserts that expect
578+
// matches one or more times in callOrder. This makes it compatible
579+
// with go test flag -count=X where X > 1.
580+
func callOrderAssert(t *testing.T, expect, callOrder []string) {
581+
var ti interface{} = t
582+
if h, ok := ti.(tHelper); ok {
583+
h.Helper()
584+
}
585+
586+
callCount := len(callOrder)
587+
expectCount := len(expect)
588+
if callCount > expectCount && callCount%expectCount == 0 {
589+
// Command line flag -count=X where X > 1.
590+
for len(callOrder) >= expectCount {
591+
assert.Equal(t, expect, callOrder[:expectCount])
592+
callOrder = callOrder[expectCount:]
593+
}
594+
return
595+
}
596+
597+
assert.Equal(t, expect, callOrder)
598+
}
599+
570600
func TestFailfastSuiteFailFastOn(t *testing.T) {
571601
// To test this with failfast on (and isolated from other intended test failures in our test suite) we launch it in its own process
572602
cmd := exec.Command("go", "test", "-v", "-race", "-run", "TestFailfastSuite", "-failfast")

0 commit comments

Comments
 (0)