Browse code

daemon/builder: use t.Context() in tests

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2025/09/26 02:26:32
Showing 4 changed files
... ...
@@ -53,7 +53,7 @@ func TestEnv2Variables(t *testing.T) {
53 53
 			instructions.KeyValuePair{Key: "var2", Value: "val2"},
54 54
 		},
55 55
 	}
56
-	err := dispatch(context.TODO(), sb, envCommand)
56
+	err := dispatch(t.Context(), sb, envCommand)
57 57
 	assert.NilError(t, err)
58 58
 
59 59
 	expected := []string{
... ...
@@ -72,7 +72,7 @@ func TestEnvValueWithExistingRunConfigEnv(t *testing.T) {
72 72
 			instructions.KeyValuePair{Key: "var1", Value: "val1"},
73 73
 		},
74 74
 	}
75
-	err := dispatch(context.TODO(), sb, envCommand)
75
+	err := dispatch(t.Context(), sb, envCommand)
76 76
 	assert.NilError(t, err)
77 77
 	expected := []string{
78 78
 		"var1=val1",
... ...
@@ -86,7 +86,7 @@ func TestMaintainer(t *testing.T) {
86 86
 	b := newBuilderWithMockBackend(t)
87 87
 	sb := newDispatchRequest(b, '\\', nil, NewBuildArgs(make(map[string]*string)), newStagesBuildResults())
88 88
 	cmd := &instructions.MaintainerCommand{Maintainer: maintainerEntry}
89
-	err := dispatch(context.TODO(), sb, cmd)
89
+	err := dispatch(t.Context(), sb, cmd)
90 90
 	assert.NilError(t, err)
91 91
 	assert.Check(t, is.Equal(sb.state.maintainer, maintainerEntry))
92 92
 }
... ...
@@ -102,7 +102,7 @@ func TestLabel(t *testing.T) {
102 102
 			instructions.KeyValuePair{Key: labelName, Value: labelValue},
103 103
 		},
104 104
 	}
105
-	err := dispatch(context.TODO(), sb, cmd)
105
+	err := dispatch(t.Context(), sb, cmd)
106 106
 	assert.NilError(t, err)
107 107
 
108 108
 	assert.Assert(t, is.Contains(sb.state.runConfig.Labels, labelName))
... ...
@@ -115,7 +115,7 @@ func TestFromScratch(t *testing.T) {
115 115
 	cmd := &instructions.Stage{
116 116
 		BaseName: "scratch",
117 117
 	}
118
-	err := initializeStage(context.TODO(), sb, cmd)
118
+	err := initializeStage(t.Context(), sb, cmd)
119 119
 
120 120
 	if runtime.GOOS == "windows" {
121 121
 		assert.Check(t, is.Error(err, "Windows does not support FROM scratch"))
... ...
@@ -153,7 +153,7 @@ func TestFromWithArg(t *testing.T) {
153 153
 
154 154
 	sb := newDispatchRequest(b, '\\', nil, args, newStagesBuildResults())
155 155
 	assert.NilError(t, err)
156
-	err = initializeStage(context.TODO(), sb, cmd)
156
+	err = initializeStage(t.Context(), sb, cmd)
157 157
 	assert.NilError(t, err)
158 158
 
159 159
 	assert.Check(t, is.Equal(sb.state.imageID, expected))
... ...
@@ -174,7 +174,7 @@ func TestFromWithArgButBuildArgsNotGiven(t *testing.T) {
174 174
 
175 175
 	sb := newDispatchRequest(b, '\\', nil, args, newStagesBuildResults())
176 176
 	assert.NilError(t, err)
177
-	err = initializeStage(context.TODO(), sb, cmd)
177
+	err = initializeStage(t.Context(), sb, cmd)
178 178
 	assert.Error(t, err, "base name (${THETAG}) should not be blank")
179 179
 }
180 180
 
... ...
@@ -194,7 +194,7 @@ func TestFromWithUndefinedArg(t *testing.T) {
194 194
 	cmd := &instructions.Stage{
195 195
 		BaseName: "alpine${THETAG}",
196 196
 	}
197
-	err := initializeStage(context.TODO(), sb, cmd)
197
+	err := initializeStage(t.Context(), sb, cmd)
198 198
 	assert.NilError(t, err)
199 199
 	assert.Check(t, is.Equal(sb.state.imageID, expected))
200 200
 }
... ...
@@ -206,12 +206,12 @@ func TestFromMultiStageWithNamedStage(t *testing.T) {
206 206
 	previousResults := newStagesBuildResults()
207 207
 	firstSB := newDispatchRequest(b, '\\', nil, NewBuildArgs(make(map[string]*string)), previousResults)
208 208
 	secondSB := newDispatchRequest(b, '\\', nil, NewBuildArgs(make(map[string]*string)), previousResults)
209
-	err := initializeStage(context.TODO(), firstSB, firstFrom)
209
+	err := initializeStage(t.Context(), firstSB, firstFrom)
210 210
 	assert.NilError(t, err)
211 211
 	assert.Check(t, firstSB.state.hasFromImage())
212 212
 	previousResults.indexed["base"] = firstSB.state.runConfig
213 213
 	previousResults.flat = append(previousResults.flat, firstSB.state.runConfig)
214
-	err = initializeStage(context.TODO(), secondSB, secondFrom)
214
+	err = initializeStage(t.Context(), secondSB, secondFrom)
215 215
 	assert.NilError(t, err)
216 216
 	assert.Check(t, secondSB.state.hasFromImage())
217 217
 }
... ...
@@ -222,7 +222,7 @@ func TestOnbuild(t *testing.T) {
222 222
 	cmd := &instructions.OnbuildCommand{
223 223
 		Expression: "ADD . /app/src",
224 224
 	}
225
-	err := dispatch(context.TODO(), sb, cmd)
225
+	err := dispatch(t.Context(), sb, cmd)
226 226
 	assert.NilError(t, err)
227 227
 	assert.Check(t, is.Equal(sb.state.runConfig.OnBuild[0], "ADD . /app/src"))
228 228
 }
... ...
@@ -239,7 +239,7 @@ func TestWorkdir(t *testing.T) {
239 239
 		Path: workingDir,
240 240
 	}
241 241
 
242
-	err := dispatch(context.TODO(), sb, cmd)
242
+	err := dispatch(t.Context(), sb, cmd)
243 243
 	assert.NilError(t, err)
244 244
 	assert.Check(t, is.Equal(sb.state.runConfig.WorkingDir, workingDir))
245 245
 }
... ...
@@ -249,7 +249,7 @@ func TestCmd(t *testing.T) {
249 249
 	sb := newDispatchRequest(b, '`', nil, NewBuildArgs(make(map[string]*string)), newStagesBuildResults())
250 250
 	sb.state.baseImage = &mockImage{}
251 251
 
252
-	err := dispatch(context.TODO(), sb, &instructions.CmdCommand{
252
+	err := dispatch(t.Context(), sb, &instructions.CmdCommand{
253 253
 		ShellDependantCmdLine: instructions.ShellDependantCmdLine{
254 254
 			CmdLine:      []string{"./executable"},
255 255
 			PrependShell: true,
... ...
@@ -276,7 +276,7 @@ func TestHealthcheckNone(t *testing.T) {
276 276
 			Test: []string{"NONE"},
277 277
 		},
278 278
 	}
279
-	err := dispatch(context.TODO(), sb, cmd)
279
+	err := dispatch(t.Context(), sb, cmd)
280 280
 	assert.NilError(t, err)
281 281
 
282 282
 	assert.Assert(t, sb.state.runConfig.Healthcheck != nil)
... ...
@@ -292,7 +292,7 @@ func TestHealthcheckCmd(t *testing.T) {
292 292
 			Test: expectedTest,
293 293
 		},
294 294
 	}
295
-	err := dispatch(context.TODO(), sb, cmd)
295
+	err := dispatch(t.Context(), sb, cmd)
296 296
 	assert.NilError(t, err)
297 297
 
298 298
 	assert.Assert(t, sb.state.runConfig.Healthcheck != nil)
... ...
@@ -304,7 +304,7 @@ func TestEntrypoint(t *testing.T) {
304 304
 	sb := newDispatchRequest(b, '`', nil, NewBuildArgs(make(map[string]*string)), newStagesBuildResults())
305 305
 	sb.state.baseImage = &mockImage{}
306 306
 
307
-	err := dispatch(context.TODO(), sb, &instructions.EntrypointCommand{
307
+	err := dispatch(t.Context(), sb, &instructions.EntrypointCommand{
308 308
 		ShellDependantCmdLine: instructions.ShellDependantCmdLine{
309 309
 			CmdLine:      []string{"/usr/sbin/nginx"},
310 310
 			PrependShell: true,
... ...
@@ -329,7 +329,7 @@ func TestExpose(t *testing.T) {
329 329
 	cmd := &instructions.ExposeCommand{
330 330
 		Ports: []string{exposedPort},
331 331
 	}
332
-	err := dispatch(context.TODO(), sb, cmd)
332
+	err := dispatch(t.Context(), sb, cmd)
333 333
 	assert.NilError(t, err)
334 334
 
335 335
 	assert.Assert(t, sb.state.runConfig.ExposedPorts != nil)
... ...
@@ -345,7 +345,7 @@ func TestUser(t *testing.T) {
345 345
 	cmd := &instructions.UserCommand{
346 346
 		User: "test",
347 347
 	}
348
-	err := dispatch(context.TODO(), sb, cmd)
348
+	err := dispatch(t.Context(), sb, cmd)
349 349
 	assert.NilError(t, err)
350 350
 	assert.Check(t, is.Equal(sb.state.runConfig.User, "test"))
351 351
 }
... ...
@@ -359,7 +359,7 @@ func TestVolume(t *testing.T) {
359 359
 	cmd := &instructions.VolumeCommand{
360 360
 		Volumes: []string{exposedVolume},
361 361
 	}
362
-	err := dispatch(context.TODO(), sb, cmd)
362
+	err := dispatch(t.Context(), sb, cmd)
363 363
 	assert.NilError(t, err)
364 364
 	assert.Assert(t, sb.state.runConfig.Volumes != nil)
365 365
 	assert.Check(t, is.Len(sb.state.runConfig.Volumes, 1))
... ...
@@ -379,7 +379,7 @@ func TestStopSignal(t *testing.T) {
379 379
 	cmd := &instructions.StopSignalCommand{
380 380
 		Signal: signal,
381 381
 	}
382
-	err := dispatch(context.TODO(), sb, cmd)
382
+	err := dispatch(t.Context(), sb, cmd)
383 383
 	assert.NilError(t, err)
384 384
 	assert.Check(t, is.Equal(sb.state.runConfig.StopSignal, signal))
385 385
 }
... ...
@@ -391,7 +391,7 @@ func TestArg(t *testing.T) {
391 391
 	argName := "foo"
392 392
 	argVal := "bar"
393 393
 	cmd := &instructions.ArgCommand{Args: []instructions.KeyValuePairOptional{{Key: argName, Value: &argVal}}}
394
-	err := dispatch(context.TODO(), sb, cmd)
394
+	err := dispatch(t.Context(), sb, cmd)
395 395
 	assert.NilError(t, err)
396 396
 
397 397
 	expected := map[string]string{argName: argVal}
... ...
@@ -403,7 +403,7 @@ func TestShell(t *testing.T) {
403 403
 	sb := newDispatchRequest(b, '`', nil, NewBuildArgs(make(map[string]*string)), newStagesBuildResults())
404 404
 
405 405
 	shellCmd := []string{"powershell"}
406
-	err := dispatch(context.TODO(), sb, &instructions.ShellCommand{
406
+	err := dispatch(t.Context(), sb, &instructions.ShellCommand{
407 407
 		Shell: shellCmd,
408 408
 	})
409 409
 	assert.NilError(t, err)
... ...
@@ -459,7 +459,7 @@ func TestRunWithBuildArgs(t *testing.T) {
459 459
 		return imageCache
460 460
 	}
461 461
 
462
-	prober, err := newImageProber(context.TODO(), mockBackend, nil, false)
462
+	prober, err := newImageProber(t.Context(), mockBackend, nil, false)
463 463
 	assert.NilError(t, err, "Could not create image prober")
464 464
 	b.imageProber = prober
465 465
 
... ...
@@ -484,7 +484,7 @@ func TestRunWithBuildArgs(t *testing.T) {
484 484
 		return "", nil
485 485
 	}
486 486
 	from := &instructions.Stage{BaseName: "abcdef"}
487
-	err = initializeStage(context.TODO(), sb, from)
487
+	err = initializeStage(t.Context(), sb, from)
488 488
 	assert.NilError(t, err)
489 489
 	sb.state.buildArgs.AddArg("one", strPtr("two"))
490 490
 
... ...
@@ -504,7 +504,7 @@ func TestRunWithBuildArgs(t *testing.T) {
504 504
 	runinst.CmdLine = []string{"echo foo"}
505 505
 	runinst.PrependShell = true
506 506
 
507
-	assert.NilError(t, dispatch(context.TODO(), sb, runinst))
507
+	assert.NilError(t, dispatch(t.Context(), sb, runinst))
508 508
 
509 509
 	// Check that runConfig.Cmd has not been modified by run
510 510
 	assert.Check(t, is.DeepEqual(sb.state.runConfig.Cmd, origCmd))
... ...
@@ -528,10 +528,10 @@ func TestRunIgnoresHealthcheck(t *testing.T) {
528 528
 	mockBackend.makeImageCacheFunc = func(_ []string) builder.ImageCache {
529 529
 		return imageCache
530 530
 	}
531
-	imageProber, err := newImageProber(context.TODO(), mockBackend, nil, false)
531
+	imgProber, err := newImageProber(t.Context(), mockBackend, nil, false)
532 532
 	assert.NilError(t, err, "Could not create image prober")
533 533
 
534
-	b.imageProber = imageProber
534
+	b.imageProber = imgProber
535 535
 	mockBackend.getImageFunc = func(_ string) (builder.Image, builder.ROLayer, error) {
536 536
 		return &mockImage{
537 537
 			id:     "abcdef",
... ...
@@ -545,7 +545,7 @@ func TestRunIgnoresHealthcheck(t *testing.T) {
545 545
 		return "", nil
546 546
 	}
547 547
 	from := &instructions.Stage{BaseName: "abcdef"}
548
-	err = initializeStage(context.TODO(), sb, from)
548
+	err = initializeStage(t.Context(), sb, from)
549 549
 	assert.NilError(t, err)
550 550
 
551 551
 	expectedTest := []string{"CMD-SHELL", "curl -f http://localhost/ || exit 1"}
... ...
@@ -562,7 +562,7 @@ func TestRunIgnoresHealthcheck(t *testing.T) {
562 562
 	assert.NilError(t, err)
563 563
 	cmd := healthint.(*instructions.HealthCheckCommand)
564 564
 
565
-	assert.NilError(t, dispatch(context.TODO(), sb, cmd))
565
+	assert.NilError(t, dispatch(t.Context(), sb, cmd))
566 566
 	assert.Assert(t, sb.state.runConfig.Healthcheck != nil)
567 567
 
568 568
 	mockBackend.containerCreateFunc = func(config backend.ContainerCreateConfig) (container.CreateResponse, error) {
... ...
@@ -577,7 +577,7 @@ func TestRunIgnoresHealthcheck(t *testing.T) {
577 577
 	run := runint.(*instructions.RunCommand)
578 578
 	run.PrependShell = true
579 579
 
580
-	assert.NilError(t, dispatch(context.TODO(), sb, run))
580
+	assert.NilError(t, dispatch(t.Context(), sb, run))
581 581
 	assert.Check(t, is.DeepEqual(sb.state.runConfig.Healthcheck.Test, expectedTest))
582 582
 }
583 583
 
... ...
@@ -595,7 +595,7 @@ func TestDispatchUnsupportedOptions(t *testing.T) {
595 595
 			},
596 596
 			Chmod: "0655",
597 597
 		}
598
-		err := dispatch(context.TODO(), sb, cmd)
598
+		err := dispatch(t.Context(), sb, cmd)
599 599
 		assert.Error(t, err, "the --chmod option requires BuildKit. Refer to https://docs.docker.com/go/buildkit/ to learn how to build images with BuildKit enabled")
600 600
 	})
601 601
 
... ...
@@ -607,7 +607,7 @@ func TestDispatchUnsupportedOptions(t *testing.T) {
607 607
 			},
608 608
 			Chmod: "0655",
609 609
 		}
610
-		err := dispatch(context.TODO(), sb, cmd)
610
+		err := dispatch(t.Context(), sb, cmd)
611 611
 		assert.Error(t, err, "the --chmod option requires BuildKit. Refer to https://docs.docker.com/go/buildkit/ to learn how to build images with BuildKit enabled")
612 612
 	})
613 613
 
... ...
@@ -621,7 +621,7 @@ func TestDispatchUnsupportedOptions(t *testing.T) {
621 621
 		// one or more of these flags will be supported in future
622 622
 		for _, f := range []string{"mount", "network", "security", "any-flag"} {
623 623
 			cmd.FlagsUsed = []string{f}
624
-			err := dispatch(context.TODO(), sb, cmd)
624
+			err := dispatch(t.Context(), sb, cmd)
625 625
 			assert.Error(t, err, fmt.Sprintf("the --%s option requires BuildKit. Refer to https://docs.docker.com/go/buildkit/ to learn how to build images with BuildKit enabled", f))
626 626
 		}
627 627
 	})
... ...
@@ -1,7 +1,6 @@
1 1
 package dockerfile
2 2
 
3 3
 import (
4
-	"context"
5 4
 	"os"
6 5
 	"runtime"
7 6
 	"testing"
... ...
@@ -130,7 +129,7 @@ func TestDispatch(t *testing.T) {
130 130
 
131 131
 			b := newBuilderWithMockBackend(t)
132 132
 			sb := newDispatchRequest(b, '`', buildContext, NewBuildArgs(make(map[string]*string)), newStagesBuildResults())
133
-			err = dispatch(context.TODO(), sb, tc.cmd)
133
+			err = dispatch(t.Context(), sb, tc.cmd)
134 134
 			assert.Check(t, is.ErrorContains(err, tc.expectedError))
135 135
 		})
136 136
 	}
... ...
@@ -1,7 +1,6 @@
1 1
 package dockerfile
2 2
 
3 3
 import (
4
-	"context"
5 4
 	"os"
6 5
 	"path/filepath"
7 6
 	"testing"
... ...
@@ -115,7 +114,7 @@ othergrp:x:6666:
115 115
 		},
116 116
 	} {
117 117
 		t.Run(testcase.name, func(t *testing.T) {
118
-			idPair, err := parseChownFlag(context.TODO(), testcase.builder, testcase.state, testcase.chownStr, contextDir, testcase.idMapping)
118
+			idPair, err := parseChownFlag(t.Context(), testcase.builder, testcase.state, testcase.chownStr, contextDir, testcase.idMapping)
119 119
 			assert.NilError(t, err, "Failed to parse chown flag: %q", testcase.chownStr)
120 120
 			assert.Check(t, is.DeepEqual(testcase.expected, idPair), "chown flag mapping failure")
121 121
 		})
... ...
@@ -156,7 +155,7 @@ othergrp:x:6666:
156 156
 		},
157 157
 	} {
158 158
 		t.Run(testcase.name, func(t *testing.T) {
159
-			_, err := parseChownFlag(context.TODO(), testcase.builder, testcase.state, testcase.chownStr, contextDir, testcase.idMapping)
159
+			_, err := parseChownFlag(t.Context(), testcase.builder, testcase.state, testcase.chownStr, contextDir, testcase.idMapping)
160 160
 			assert.Check(t, is.Error(err, testcase.descr), "Expected error string doesn't match")
161 161
 		})
162 162
 	}
... ...
@@ -1,7 +1,6 @@
1 1
 package dockerfile
2 2
 
3 3
 import (
4
-	"context"
5 4
 	"fmt"
6 5
 	"os"
7 6
 	"runtime"
... ...
@@ -206,6 +205,6 @@ func TestExportImage(t *testing.T) {
206 206
 		imageSources: getMockImageSource(nil, nil, nil),
207 207
 		docker:       getMockBuildBackend(),
208 208
 	}
209
-	err := b.exportImage(context.TODO(), ds, &MockRWLayer{}, parentImage, &container.Config{})
209
+	err := b.exportImage(t.Context(), ds, &MockRWLayer{}, parentImage, &container.Config{})
210 210
 	assert.NilError(t, err)
211 211
 }