Skip to content

Commit 404616a

Browse files
committed
fix: Try to fix cli portforward test flakes
1 parent c8ed213 commit 404616a

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

cli/portforward_test.go

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,16 @@ func TestPortForward(t *testing.T) {
141141
},
142142
}
143143

144-
for _, c := range cases { //nolint:paralleltest // the `c := c` confuses the linter
144+
//nolint:paralleltest
145+
for _, c := range cases {
145146
c := c
147+
// Avoid parallel test here because setupLocal reserves
148+
// a free open port which is not guaranteed to be free
149+
// after the listener closes.
150+
//nolint:paralleltest
146151
t.Run(c.name, func(t *testing.T) {
147-
t.Parallel()
148-
152+
//nolint:paralleltest
149153
t.Run("OnePort", func(t *testing.T) {
150-
t.Parallel()
151154
var (
152155
client = coderdtest.New(t, &coderdtest.Options{IncludeProvisionerD: true})
153156
user = coderdtest.CreateFirstUser(t, client)
@@ -170,10 +173,9 @@ func TestPortForward(t *testing.T) {
170173
cmd.SetOut(io.MultiWriter(buf, os.Stderr))
171174
ctx, cancel := context.WithCancel(context.Background())
172175
defer cancel()
176+
errC := make(chan error)
173177
go func() {
174-
err := cmd.ExecuteContext(ctx)
175-
require.Error(t, err)
176-
require.ErrorIs(t, err, context.Canceled)
178+
errC <- cmd.ExecuteContext(ctx)
177179
}()
178180
waitForPortForwardReady(t, buf)
179181

@@ -188,10 +190,13 @@ func TestPortForward(t *testing.T) {
188190
defer c2.Close()
189191
testDial(t, c2)
190192
testDial(t, c1)
193+
194+
err = <-errC
195+
require.ErrorIs(t, err, context.Canceled)
191196
})
192197

198+
//nolint:paralleltest
193199
t.Run("TwoPorts", func(t *testing.T) {
194-
t.Parallel()
195200
var (
196201
client = coderdtest.New(t, &coderdtest.Options{IncludeProvisionerD: true})
197202
user = coderdtest.CreateFirstUser(t, client)
@@ -218,10 +223,9 @@ func TestPortForward(t *testing.T) {
218223
cmd.SetOut(io.MultiWriter(buf, os.Stderr))
219224
ctx, cancel := context.WithCancel(context.Background())
220225
defer cancel()
226+
errC := make(chan error)
221227
go func() {
222-
err := cmd.ExecuteContext(ctx)
223-
require.Error(t, err)
224-
require.ErrorIs(t, err, context.Canceled)
228+
errC <- cmd.ExecuteContext(ctx)
225229
}()
226230
waitForPortForwardReady(t, buf)
227231

@@ -236,13 +240,16 @@ func TestPortForward(t *testing.T) {
236240
defer c2.Close()
237241
testDial(t, c2)
238242
testDial(t, c1)
243+
244+
err = <-errC
245+
require.ErrorIs(t, err, context.Canceled)
239246
})
240247
})
241248
}
242249

243250
// Test doing a TCP -> Unix forward.
251+
//nolint:paralleltest
244252
t.Run("TCP2Unix", func(t *testing.T) {
245-
t.Parallel()
246253
var (
247254
client = coderdtest.New(t, &coderdtest.Options{IncludeProvisionerD: true})
248255
user = coderdtest.CreateFirstUser(t, client)
@@ -273,10 +280,9 @@ func TestPortForward(t *testing.T) {
273280
cmd.SetOut(io.MultiWriter(buf, os.Stderr))
274281
ctx, cancel := context.WithCancel(context.Background())
275282
defer cancel()
283+
errC := make(chan error)
276284
go func() {
277-
err := cmd.ExecuteContext(ctx)
278-
require.Error(t, err)
279-
require.ErrorIs(t, err, context.Canceled)
285+
errC <- cmd.ExecuteContext(ctx)
280286
}()
281287
waitForPortForwardReady(t, buf)
282288

@@ -291,11 +297,14 @@ func TestPortForward(t *testing.T) {
291297
defer c2.Close()
292298
testDial(t, c2)
293299
testDial(t, c1)
300+
301+
err = <-errC
302+
require.ErrorIs(t, err, context.Canceled)
294303
})
295304

296305
// Test doing TCP, UDP and Unix at the same time.
306+
//nolint:paralleltest
297307
t.Run("All", func(t *testing.T) {
298-
t.Parallel()
299308
var (
300309
client = coderdtest.New(t, &coderdtest.Options{IncludeProvisionerD: true})
301310
user = coderdtest.CreateFirstUser(t, client)
@@ -334,10 +343,9 @@ func TestPortForward(t *testing.T) {
334343
cmd.SetOut(io.MultiWriter(buf, os.Stderr))
335344
ctx, cancel := context.WithCancel(context.Background())
336345
defer cancel()
346+
errC := make(chan error)
337347
go func() {
338-
err := cmd.ExecuteContext(ctx)
339-
require.Error(t, err)
340-
require.ErrorIs(t, err, context.Canceled)
348+
errC <- cmd.ExecuteContext(ctx)
341349
}()
342350
waitForPortForwardReady(t, buf)
343351

@@ -359,6 +367,9 @@ func TestPortForward(t *testing.T) {
359367
for i := len(conns) - 1; i >= 0; i-- {
360368
testDial(t, conns[i])
361369
}
370+
371+
err := <-errC
372+
require.ErrorIs(t, err, context.Canceled)
362373
})
363374
}
364375

0 commit comments

Comments
 (0)