| package dockerfile |
| |
| import ( |
| "strings" |
| |
| "testing" |
| |
| "github.com/docker/docker/api/types" |
| "github.com/docker/docker/api/types/container" |
| "github.com/docker/docker/builder/dockerfile/parser" |
| ) |
| |
| func TestBuildProcessLabels(t *testing.T) { |
| dockerfile := "FROM scratch" |
| d := parser.Directive{} |
| parser.SetEscapeToken(parser.DefaultEscapeToken, &d) |
| n, err := parser.Parse(strings.NewReader(dockerfile), &d) |
| if err != nil { |
| t.Fatalf("Error when parsing Dockerfile: %s", err) |
| } |
| |
| options := &types.ImageBuildOptions{ |
| Labels: map[string]string{ |
| "org.e": "cli-e", |
| "org.d": "cli-d", |
| "org.c": "cli-c", |
| "org.b": "cli-b", |
| "org.a": "cli-a", |
| }, |
| } |
| b := &Builder{ |
| runConfig: &container.Config{}, |
| options: options, |
| directive: d, |
| dockerfile: n, |
| } |
| err = b.processLabels() |
| if err != nil { |
| t.Fatalf("Error when processing labels: %s", err) |
| } |
| |
| expected := []string{ |
| "FROM scratch", |
| `LABEL "org.a"='cli-a' "org.b"='cli-b' "org.c"='cli-c' "org.d"='cli-d' "org.e"='cli-e'`, |
| } |
| if len(b.dockerfile.Children) != 2 { |
| t.Fatalf("Expect 2, got %d", len(b.dockerfile.Children)) |
| } |
| for i, v := range b.dockerfile.Children { |
| if v.Original != expected[i] { |
| t.Fatalf("Expect '%s' for %dth children, got, '%s'", expected[i], i, v.Original) |
| } |
| } |
| } |