File tree Expand file tree Collapse file tree 4 files changed +24
-2
lines changed Expand file tree Collapse file tree 4 files changed +24
-2
lines changed Original file line number Diff line number Diff line change @@ -92,8 +92,14 @@ func rainbowColor() colorFunc {
92
92
}
93
93
94
94
var loop = make (chan colorFunc )
95
+ var quitChan = make (chan bool )
96
+
97
+ func cleanInfiniteGoroutine () {
98
+ quitChan <- true
99
+ }
95
100
96
101
func init () {
102
+ defer cleanInfiniteGoroutine ()
97
103
colors := map [string ]colorFunc {}
98
104
for i , name := range names {
99
105
colors [name ] = makeColorFunc (strconv .Itoa (30 + i ))
@@ -116,8 +122,14 @@ func init() {
116
122
}
117
123
118
124
for {
119
- loop <- rainbow [i ]
120
- i = (i + 1 ) % len (rainbow )
125
+ select {
126
+ case <- quitChan :
127
+ return
128
+ default :
129
+ loop <- rainbow [i ]
130
+ i = (i + 1 ) % len (rainbow )
131
+ }
121
132
}
122
133
}()
134
+
123
135
}
Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ import (
22
22
"io"
23
23
"testing"
24
24
25
+ "go.uber.org/goleak"
25
26
"gotest.tools/v3/assert"
26
27
)
27
28
@@ -71,3 +72,8 @@ func TestPrint(t *testing.T) {
71
72
{"Name":"myName2","Status":"myStatus2"}
72
73
` )
73
74
}
75
+
76
+ // Test the absence of unexpected goroutines.
77
+ func TestColorsGoroutinesLeak (t * testing.T ) {
78
+ goleak .VerifyNone (t )
79
+ }
Original file line number Diff line number Diff line change @@ -150,6 +150,8 @@ require (
150
150
sigs.k8s.io/yaml v1.2.0 // indirect
151
151
)
152
152
153
+ require go.uber.org/goleak v1.1.12
154
+
153
155
replace (
154
156
// Override for e2e tests
155
157
github.com/cucumber/godog => github.com/laurazard/godog v0.0.0-20220922095256-4c4b17abdae7
Original file line number Diff line number Diff line change @@ -770,6 +770,7 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl
770
770
golang.org/x/lint v0.0.0-20190930215403-16217165b5de /go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc =
771
771
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f /go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs =
772
772
golang.org/x/lint v0.0.0-20200130185559-910be7a94367 /go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY =
773
+ golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k =
773
774
golang.org/x/lint v0.0.0-20200302205851-738671d3881b /go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY =
774
775
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6 /go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE =
775
776
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 /go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o =
@@ -978,6 +979,7 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f
978
979
golang.org/x/tools v0.1.0 /go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0 =
979
980
golang.org/x/tools v0.1.1 /go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk =
980
981
golang.org/x/tools v0.1.5 /go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk =
982
+ golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU =
981
983
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 /go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0 =
982
984
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 /go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0 =
983
985
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 /go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0 =
You can’t perform that action at this time.
0 commit comments