@@ -12,8 +12,9 @@ import (
12
12
"qa/tapjio"
13
13
)
14
14
15
- type testResult struct {
16
- testEvent tapjio.TestEvent
15
+ type testEventUnion struct {
16
+ testBegan * tapjio.TestStartedEvent
17
+ testEvent * tapjio.TestEvent
17
18
testError error
18
19
}
19
20
@@ -83,8 +84,7 @@ func (self *testSuiteRunner) Run(
83
84
84
85
var abort = false
85
86
var traceChan = make (chan tapjio.TraceEvent , numWorkers )
86
- var testResultChan = make (chan testResult , numWorkers )
87
- var testStartChan = make (chan tapjio.TestStartedEvent , numWorkers )
87
+ var testChan = make (chan testEventUnion , numWorkers )
88
88
89
89
var awaitJobs sync.WaitGroup
90
90
awaitJobs .Add (numWorkers )
@@ -96,7 +96,7 @@ func (self *testSuiteRunner) Run(
96
96
for testRunner := range testRunnerChan {
97
97
if abort {
98
98
for i := testRunner .TestCount (); i > 0 ; i -- {
99
- testResultChan <- testResult {testError : errors .New ("already aborted" )}
99
+ testChan <- testEventUnion {testError : errors .New ("already aborted" )}
100
100
}
101
101
} else {
102
102
var awaitRun sync.WaitGroup
@@ -105,18 +105,18 @@ func (self *testSuiteRunner) Run(
105
105
env ,
106
106
tapjio.DecodingCallbacks {
107
107
OnTestBegin : func (test tapjio.TestStartedEvent ) error {
108
- testStartChan <- test
108
+ testChan <- testEventUnion { & test , nil , nil }
109
109
return nil
110
110
},
111
111
OnTest : func (test tapjio.TestEvent ) error {
112
- testResultChan <- testResult { test , nil }
112
+ testChan <- testEventUnion { nil , & test , nil }
113
113
return nil
114
114
},
115
115
OnTrace : func (trace tapjio.TraceEvent ) error {
116
116
traceChan <- trace
117
117
return nil
118
118
},
119
- OnFinal : func (final tapjio. FinalEvent ) error {
119
+ OnEnd : func (reason error ) error {
120
120
awaitRun .Done ()
121
121
return nil
122
122
},
@@ -144,28 +144,31 @@ func (self *testSuiteRunner) Run(
144
144
if err != nil {
145
145
return
146
146
}
147
- case testStart := <- testStartChan :
148
- err = visitor .TestStarted (testStart )
149
- if err != nil {
150
- return
151
- }
152
- case testResult := <- testResultChan :
153
- err = testResult .testError
154
- if err == nil {
155
- test := testResult .testEvent
156
- final .Counts .Increment (test .Status )
157
-
158
- err = visitor .TestFinished (test )
147
+ case testEventUnion := <- testChan :
148
+ begin := testEventUnion .testBegan
149
+ if begin != nil {
150
+ err = visitor .TestStarted (* begin )
159
151
if err != nil {
160
152
return
161
153
}
162
- }
154
+ } else {
155
+ err = testEventUnion .testError
156
+ if err == nil {
157
+ test := testEventUnion .testEvent
158
+ final .Counts .Increment (test .Status )
159
+
160
+ err = visitor .TestFinished (* test )
161
+ if err != nil {
162
+ return
163
+ }
164
+ }
163
165
164
- if err != nil {
165
- abort = true
166
- final .Counts .Increment (tapjio .Error )
167
- fmt .Fprintln (os .Stderr , "Error:" , err )
168
- return
166
+ if err != nil {
167
+ abort = true
168
+ final .Counts .Increment (tapjio .Error )
169
+ fmt .Fprintln (os .Stderr , "Error:" , err )
170
+ return
171
+ }
169
172
}
170
173
}
171
174
}
0 commit comments