diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index 52132f175e..6a83595746 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -4585,14 +4585,29 @@ func TestBuildLabelsCache(t *testing.T) { `FROM busybox LABEL Vendor=Acme1`, true) if err != nil || id1 == id2 { - t.Fatalf("Build 2 should have worked & NOT used cache(%s,%s): %v", id1, id2, err) + t.Fatalf("Build 3 should have worked & NOT used cache(%s,%s): %v", id1, id2, err) } id2, err = buildImage(name, `FROM busybox LABEL Vendor Acme`, true) // Note: " " and "=" should be same if err != nil || id1 != id2 { - t.Fatalf("Build 3 should have worked & used cache(%s,%s): %v", id1, id2, err) + t.Fatalf("Build 4 should have worked & used cache(%s,%s): %v", id1, id2, err) + } + + // Now make sure the cache isn't used by mistake + id1, err = buildImage(name, + `FROM busybox + LABEL f1=b1 f2=b2`, false) + if err != nil { + t.Fatalf("Build 5 should have worked: %q", err) + } + + id2, err = buildImage(name, + `FROM busybox + LABEL f1="b1 f2=b2"`, true) + if err != nil || id1 == id2 { + t.Fatalf("Build 6 should have worked & NOT used the cache(%s,%s): %q", id1, id2, err) } logDone("build - label cache") diff --git a/runconfig/compare.go b/runconfig/compare.go index 5c1bf46575..60a21a79c0 100644 --- a/runconfig/compare.go +++ b/runconfig/compare.go @@ -19,6 +19,7 @@ func Compare(a, b *Config) bool { } if len(a.Cmd) != len(b.Cmd) || len(a.Env) != len(b.Env) || + len(a.Labels) != len(b.Labels) || len(a.PortSpecs) != len(b.PortSpecs) || len(a.ExposedPorts) != len(b.ExposedPorts) || len(a.Entrypoint) != len(b.Entrypoint) || @@ -36,6 +37,11 @@ func Compare(a, b *Config) bool { return false } } + for k, v := range a.Labels { + if v != b.Labels[k] { + return false + } + } for i := 0; i < len(a.PortSpecs); i++ { if a.PortSpecs[i] != b.PortSpecs[i] { return false