github.com/git-ogawa/go-dbyml@v1.2.1/dbyml/build_test.go (about) 1 package dbyml 2 3 import ( 4 "os" 5 "path/filepath" 6 "reflect" 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestParseOptions(t *testing.T) { 14 buildkitInfo := NewBuildkitInfo() 15 16 buildkitInfo.Output["type"] = "image" 17 buildkitInfo.Output["name"] = "myregistry.com:5000/test:latest" 18 buildkitInfo.Output["value"] = map[string]string{"type": "myregistry.com:5000/test:latest"} 19 buildkitInfo.Cache["export"] = map[string]string{"type": "inline"} 20 buildkitInfo.Cache["import"] = map[string]string{ 21 "type": "registry", 22 "value": "myregistry.com:5000/test:latest", 23 } 24 buildkitInfo.Platform = []string{"linux/amd64", "linux/arm64"} 25 26 imageInfo := NewImageInfo() 27 arg := "value1" 28 imageInfo.BuildArgs = map[string]*string{"args1": &arg} 29 imageInfo.Labels = map[string]string{"label1": "label_value"} 30 31 expected := []string{ 32 "--output", 33 "type=image,name=myregistry.com:5000/test:latest,push=true", 34 "--export-cache", 35 "type=inline", 36 "--import-cache", 37 "type=registry,ref=myregistry.com:5000/test:latest", 38 "--opt", 39 "platform=linux/amd64,linux/arm64", 40 "--opt", 41 "label:label1=label_value", 42 "--opt", 43 "build-arg:args1=value1", 44 } 45 cmd := buildkitInfo.ParseOptions(*imageInfo) 46 assert.Equal(t, reflect.DeepEqual(cmd, expected), true) 47 } 48 49 func TestBuilderCreate(t *testing.T) { 50 builder := NewBuilder() 51 builder.Name = "gotest-builder" 52 53 builder.Create() 54 status, _ := builder.Inspect() 55 assert.Equal(t, status.ContainerJSONBase.State.Status, "created") 56 builder.Remove() 57 } 58 59 func TestBuilderUseExisting(t *testing.T) { 60 builder := NewBuilder() 61 builder.Name = "gotest-builder" 62 63 builder.Create() 64 assert.Equal(t, builder.Exists(), true) 65 builder.SetContainerID() 66 builder.Start() 67 time.Sleep(time.Second * 2) 68 status, _ := builder.Inspect() 69 assert.Equal(t, status.ContainerJSONBase.State.Status, "running") 70 builder.Remove() 71 } 72 73 func TestBuilderStop(t *testing.T) { 74 builder := NewBuilder() 75 builder.Name = "gotest-builder" 76 77 builder.Create() 78 builder.Start() 79 builder.Stop() 80 status, _ := builder.Inspect() 81 assert.Equal(t, status.ContainerJSONBase.State.Status, "exited") 82 builder.Remove() 83 } 84 85 // Build a image with buildkitd 86 func TestBuilderBuild(t *testing.T) { 87 pwd, _ := os.Getwd() 88 root, _ := filepath.Abs("../") 89 os.Chdir(root) 90 91 builder := NewBuilder() 92 builder.Name = "gotest-builder" 93 registry := NewRegistryInfo() 94 95 builder.Setup(registry) 96 builder.Start() 97 time.Sleep(time.Second * 2) 98 builder.CopyFiles("testdata/dockerfile_buildkit", "/tmp") 99 builder.Build(true) 100 builder.Remove() 101 os.Chdir(pwd) 102 } 103 104 func TestImagePull(t *testing.T) { 105 builder := NewBuilder() 106 builder.Image.Exists() 107 err := builder.Image.Pull() 108 if err != nil { 109 panic(err) 110 } 111 }