-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelpers_test.go
More file actions
66 lines (54 loc) · 1.21 KB
/
helpers_test.go
File metadata and controls
66 lines (54 loc) · 1.21 KB
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
package workerbase
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
//
// TODO - standardize these in a lib
//
type fakeTestingT struct{}
func (fakeTestingT) Errorf(format string, args ...interface{}) {}
func eventually(t *testing.T, f func() bool) {
require.Eventually(t, f, time.Second, 10*time.Millisecond)
}
func readErrorValue(t *testing.T, ch <-chan error) error {
timeout := time.After(time.Second)
select {
case value := <-ch:
return value
case <-timeout:
require.Fail(t, "timed out")
}
return nil
}
// TODO - document
func consistently(t *testing.T, f func() bool) {
// TODO - need to do something similar in mockgen
if assert.Eventually(fakeTestingT{}, func() bool { return !f() }, 100*time.Millisecond, 10*time.Millisecond) {
require.Fail(t, "not consistent")
}
}
// TODO - document
func assertStructChanDoesNotReceive(t *testing.T, ch <-chan struct{}) {
consistently(t, func() bool {
select {
case <-ch:
return false
default:
return true
}
})
}
// TODO - document
func receiveStruct(ch <-chan struct{}) func() bool {
return func() bool {
select {
case _, ok := <-ch:
return ok
default:
return false
}
}
}