Skip to content

Commit 32613ac

Browse files
committed
- switch local and remote curl assertions to substring checks for dynamic HTTP responses
- add per-run build markers to restarthelper fixtures to avoid cached image reuse - retry sync writes until the remote file reflects the change instead of assuming watcher readiness - sanitize terminal output parsing so pod name detection is resilient to control characters - deduplicate image tag lookup logic in build tests - clean up env var set/unset handling across e2e tests to satisfy errcheck
1 parent c184687 commit 32613ac

14 files changed

Lines changed: 165 additions & 141 deletions

File tree

e2e/framework/helper.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ func ExpectRemoteFileContents(imageSelector string, namespace string, filePath s
9292
ExpectNoErrorWithOffset(1, err)
9393
}
9494

95-
func ExpectLocalCurlContents(urlString string, contents string) {
95+
func ExpectLocalCurlContains(urlString string, contents string) {
9696
client := resty.New()
9797
err := wait.PollUntilContextTimeout(context.TODO(), time.Second, time.Minute*2, true, func(_ context.Context) (done bool, err error) {
9898
resp, _ := client.R().
9999
EnableTrace().
100100
Get(urlString)
101-
return strings.TrimSpace(string(resp.Body())) == strings.TrimSpace(contents), nil
101+
return strings.Contains(strings.TrimSpace(string(resp.Body())), strings.TrimSpace(contents)), nil
102102
})
103103
ExpectNoErrorWithOffset(1, err)
104104
}
@@ -118,15 +118,15 @@ func ExpectContainerNameAndImageEqual(namespace, deploymentName, containerImage,
118118
ExpectNoErrorWithOffset(1, err)
119119
}
120120

121-
func ExpectRemoteCurlContents(imageSelector string, namespace string, urlString string, contents string) {
121+
func ExpectRemoteCurlContains(imageSelector string, namespace string, urlString string, contents string) {
122122
kubeClient, err := kube.NewKubeHelper()
123123
ExpectNoErrorWithOffset(1, err)
124124
err = wait.PollUntilContextTimeout(context.TODO(), time.Second, time.Minute*2, true, func(_ context.Context) (done bool, err error) {
125125
out, err := kubeClient.ExecByImageSelector(imageSelector, namespace, []string{"curl", urlString})
126126
if err != nil {
127127
return false, nil
128128
}
129-
return strings.TrimSpace(out) == strings.TrimSpace(contents), nil
129+
return strings.Contains(strings.TrimSpace(out), strings.TrimSpace(contents)), nil
130130
})
131131
ExpectNoErrorWithOffset(1, err)
132132
}

e2e/tests/build/build.go

Lines changed: 18 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -246,14 +246,7 @@ var _ = DevSpaceDescribe("build", func() {
246246
imageList, err := dockerClient.ImageList(ctx, image.ListOptions{})
247247
framework.ExpectNoError(err)
248248

249-
for _, image := range imageList {
250-
if len(image.RepoTags) > 0 && image.RepoTags[0] == "my-docker-username/helloworld-buildkit:latest" {
251-
err = nil
252-
break
253-
} else {
254-
err = errors.New("image not found")
255-
}
256-
}
249+
err = ensureImagePresent(imageList, "my-docker-username/helloworld-buildkit:latest")
257250
framework.ExpectNoError(err)
258251

259252
var stdout, stderr bytes.Buffer
@@ -290,14 +283,7 @@ var _ = DevSpaceDescribe("build", func() {
290283
imageList, err := dockerClient.ImageList(ctx, image.ListOptions{})
291284
framework.ExpectNoError(err)
292285

293-
for _, image := range imageList {
294-
if len(image.RepoTags) > 0 && image.RepoTags[0] == "my-docker-username/helloworld-buildkit:latest" {
295-
err = nil
296-
break
297-
} else {
298-
err = errors.New("image not found")
299-
}
300-
}
286+
err = ensureImagePresent(imageList, "my-docker-username/helloworld-buildkit:latest")
301287
framework.ExpectNoError(err)
302288
})
303289

@@ -342,14 +328,7 @@ var _ = DevSpaceDescribe("build", func() {
342328
imageList, err := dockerClient.ImageList(ctx, image.ListOptions{})
343329
framework.ExpectNoError(err)
344330

345-
for _, image := range imageList {
346-
if len(image.RepoTags) > 0 && image.RepoTags[0] == "my-docker-username/helloworld-custom-build:latest" {
347-
err = nil
348-
break
349-
} else {
350-
err = errors.New("image not found")
351-
}
352-
}
331+
err = ensureImagePresent(imageList, "my-docker-username/helloworld-custom-build:latest")
353332
framework.ExpectNoError(err)
354333
})
355334

@@ -377,14 +356,7 @@ var _ = DevSpaceDescribe("build", func() {
377356
imageList, err := dockerClient.ImageList(ctx, image.ListOptions{})
378357
framework.ExpectNoError(err)
379358
imageName := "my-docker-username/helloworld-dockerignore:latest"
380-
for _, image := range imageList {
381-
if image.RepoTags[0] == imageName {
382-
err = nil
383-
break
384-
} else {
385-
err = errors.New("image not found")
386-
}
387-
}
359+
err = ensureImagePresent(imageList, imageName)
388360
framework.ExpectNoError(err)
389361

390362
resp, err := dockerClient.ContainerCreate(ctx, &container.Config{
@@ -442,14 +414,7 @@ var _ = DevSpaceDescribe("build", func() {
442414
imageList, err := dockerClient.ImageList(ctx, image.ListOptions{})
443415
framework.ExpectNoError(err)
444416
imageName := "my-docker-username/helloworld-dockerignore-rel-path:latest"
445-
for _, image := range imageList {
446-
if image.RepoTags[0] == imageName {
447-
err = nil
448-
break
449-
} else {
450-
err = errors.New("image not found")
451-
}
452-
}
417+
err = ensureImagePresent(imageList, imageName)
453418
framework.ExpectNoError(err)
454419

455420
resp, err := dockerClient.ContainerCreate(ctx, &container.Config{
@@ -507,14 +472,7 @@ var _ = DevSpaceDescribe("build", func() {
507472
imageList, err := dockerClient.ImageList(ctx, image.ListOptions{})
508473
framework.ExpectNoError(err)
509474
imageName := "my-docker-username/helloworld-dockerignore-context:latest"
510-
for _, image := range imageList {
511-
if image.RepoTags[0] == imageName {
512-
err = nil
513-
break
514-
} else {
515-
err = errors.New("image not found")
516-
}
517-
}
475+
err = ensureImagePresent(imageList, imageName)
518476
framework.ExpectNoError(err)
519477

520478
resp, err := dockerClient.ContainerCreate(ctx, &container.Config{
@@ -556,6 +514,18 @@ func stdoutContains(stdout, content string) error {
556514
return fmt.Errorf("%s found in output", content)
557515
}
558516

517+
func ensureImagePresent(imageList []image.Summary, imageName string) error {
518+
for _, image := range imageList {
519+
for _, repoTag := range image.RepoTags {
520+
if repoTag == imageName {
521+
return nil
522+
}
523+
}
524+
}
525+
526+
return errors.New("image not found")
527+
}
528+
559529
func stderrContains(stderr, content string) error {
560530
if strings.Contains(stderr, content) {
561531
return nil

e2e/tests/command/command.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ var _ = DevSpaceDescribe("command", func() {
7373
framework.ExpectNoError(err)
7474
defer framework.CleanupTempDir(initialDir, tempDir)
7575

76-
defer os.Unsetenv("KUBECONFIG")
76+
defer os.Unsetenv("KUBECONFIG") //nolint:errcheck
7777
err = os.Setenv("KUBECONFIG", filepath.Join(tempDir, "config"))
7878
framework.ExpectNoError(err)
7979

0 commit comments

Comments
 (0)