github.com/flavio/docker@v0.1.3-0.20170117145210-f63d1a6eec47/builder/dockerfile/builder_test.go (about)

     1  package dockerfile
     2  
     3  import (
     4  	"strings"
     5  
     6  	"testing"
     7  
     8  	"github.com/docker/docker/api/types"
     9  	"github.com/docker/docker/api/types/container"
    10  	"github.com/docker/docker/builder/dockerfile/parser"
    11  )
    12  
    13  func TestBuildProcessLabels(t *testing.T) {
    14  	dockerfile := "FROM scratch"
    15  	d := parser.Directive{}
    16  	parser.SetEscapeToken(parser.DefaultEscapeToken, &d)
    17  	n, err := parser.Parse(strings.NewReader(dockerfile), &d)
    18  	if err != nil {
    19  		t.Fatalf("Error when parsing Dockerfile: %s", err)
    20  	}
    21  
    22  	options := &types.ImageBuildOptions{
    23  		Labels: map[string]string{
    24  			"org.e": "cli-e",
    25  			"org.d": "cli-d",
    26  			"org.c": "cli-c",
    27  			"org.b": "cli-b",
    28  			"org.a": "cli-a",
    29  		},
    30  	}
    31  	b := &Builder{
    32  		runConfig:  &container.Config{},
    33  		options:    options,
    34  		directive:  d,
    35  		dockerfile: n,
    36  	}
    37  	err = b.processLabels()
    38  	if err != nil {
    39  		t.Fatalf("Error when processing labels: %s", err)
    40  	}
    41  
    42  	expected := []string{
    43  		"FROM scratch",
    44  		`LABEL "org.a"='cli-a' "org.b"='cli-b' "org.c"='cli-c' "org.d"='cli-d' "org.e"='cli-e'`,
    45  	}
    46  	if len(b.dockerfile.Children) != 2 {
    47  		t.Fatalf("Expect 2, got %d", len(b.dockerfile.Children))
    48  	}
    49  	for i, v := range b.dockerfile.Children {
    50  		if v.Original != expected[i] {
    51  			t.Fatalf("Expect '%s' for %dth children, got, '%s'", expected[i], i, v.Original)
    52  		}
    53  	}
    54  }