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  }