forked from gotestyourself/gotest.tools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
suite_test.go
96 lines (76 loc) · 2.22 KB
/
suite_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package suite
import (
"testing"
"github.com/gotestyourself/gotestyourself/assert"
is "github.com/gotestyourself/gotestyourself/assert/cmp"
)
type fakeSuite struct {
Suite
suiteT *testing.T
counter int
beforeTestCalls []string
testCalls []string
afterTestCalls []string
}
func (s *fakeSuite) assertAndIncrement(expected int) {
if ht, ok := testing.TB(s.t).(helperT); ok {
ht.Helper()
}
s.Assert(is.Equal(s.counter, expected))
s.counter++
}
func (s *fakeSuite) baseCount() int {
return len(s.afterTestCalls) * 4
}
func (s *fakeSuite) SetupSuite() {
s.assertAndIncrement(0)
s.Assert(is.Equal(s.suiteT, s.T()))
}
func (s *fakeSuite) SetupTest() {
s.assertAndIncrement(s.baseCount() + 1)
s.Assert(s.suiteT != s.T())
}
func (s *fakeSuite) BeforeTest(suiteName, testName string) {
s.assertAndIncrement(s.baseCount() + 2)
s.Assert(is.Equal(suiteName, "fakeSuite"))
s.beforeTestCalls = append(s.beforeTestCalls, testName)
s.Assert(s.suiteT != s.T())
}
func (s *fakeSuite) AfterTest(suiteName, testName string) {
s.assertAndIncrement(s.baseCount() + 3)
s.Assert(is.Equal(suiteName, "fakeSuite"))
s.afterTestCalls = append(s.afterTestCalls, testName)
s.Assert(s.suiteT != s.T())
}
func (s *fakeSuite) TearDownTest() {
s.assertAndIncrement(s.baseCount())
s.Assert(s.suiteT != s.T())
}
func (s *fakeSuite) TearDownSuite() {
s.assertAndIncrement(s.baseCount() + 1)
s.Assert(is.Equal(s.suiteT, s.T()))
}
func (s *fakeSuite) TestOne() {
s.testCalls = append(s.testCalls, "TestOne")
s.Assert(s.suiteT != s.T())
}
func (s *fakeSuite) TestTwo() {
s.testCalls = append(s.testCalls, "TestTwo")
}
func (s *fakeSuite) TestSkip() {
s.testCalls = append(s.testCalls, "TestSkip")
s.T().Skip()
}
func (s *fakeSuite) NonATestMethod() {
}
func TestRunSuite(t *testing.T) {
fakeSuite := new(fakeSuite)
fakeSuite.suiteT = t
Run(t, fakeSuite)
expectedCount := 14 // setupSuite=1 + teardownSuite=1 + (numTests=3 * numFixtures=4)
assert.Equal(t, fakeSuite.counter, expectedCount)
expected := []string{"TestOne", "TestSkip", "TestTwo"}
assert.Assert(t, is.Compare(expected, fakeSuite.testCalls))
assert.Assert(t, is.Compare(expected, fakeSuite.afterTestCalls))
assert.Assert(t, is.Compare(expected, fakeSuite.beforeTestCalls))
}