...
1 package kubeapply_test
2
3 import (
4 "os"
5 "strings"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9
10 "github.com/datawire/dlib/dexec"
11 "github.com/datawire/dlib/dlog"
12 "github.com/emissary-ingress/emissary/v3/pkg/dtest"
13 "github.com/emissary-ingress/emissary/v3/pkg/kubeapply"
14 )
15
16 func needsDocker(t *testing.T) {
17 if _, err := dexec.LookPath("docker"); err != nil {
18 if os.Getenv("CI") != "" {
19 t.Fatalf("This should not happen in CI: skipping test because 'docker' is not installed: %v", err)
20 }
21 t.Skip(err)
22 }
23 }
24
25 func TestDocker(t *testing.T) {
26 needsDocker(t)
27
28 ctx := dlog.NewTestContext(t, false)
29
30 if os.Getenv("DOCKER_REGISTRY") == "" {
31 os.Setenv("DOCKER_REGISTRY", dtest.DockerRegistry(ctx))
32 }
33
34 _, err := kubeapply.ExpandResource(ctx, "testdata/docker.yaml")
35 assert.NoError(t, err)
36 }
37
38 func TestExpand(t *testing.T) {
39 needsDocker(t)
40
41 ctx := dlog.NewTestContext(t, false)
42
43 if os.Getenv("DOCKER_REGISTRY") == "" {
44 os.Setenv("DOCKER_REGISTRY", dtest.DockerRegistry(ctx))
45 }
46
47 outfiles, err := kubeapply.TestExpand(ctx, []string{"testdata/docker.yaml"})
48 assert.NoError(t, err)
49 assert.Equal(t, []string{"testdata/docker.yaml.o"}, outfiles)
50
51 actBytes, err := os.ReadFile("testdata/docker.yaml.o")
52 assert.NoError(t, err)
53 actStr := string(actBytes)
54
55 img, err := kubeapply.TestImage(ctx, ".", "../../docker/test-http/Dockerfile")
56 assert.NoError(t, err)
57 assert.True(t, strings.HasPrefix(img, os.Getenv("DOCKER_REGISTRY")+"/kubeapply:"))
58
59 expBytes, err := os.ReadFile("testdata/docker.yaml.o.exp")
60 assert.NoError(t, err)
61 expStr := strings.ReplaceAll(string(expBytes), "@IMAGE@", img)
62
63 assert.Equal(t, expStr, actStr)
64 }
65
View as plain text