Browse code

Merge pull request #27174 from duglin/Issue26027

Don't env-var evaluate labels from docker build cmd line

Sebastiaan van Stijn authored on 2016/10/15 12:57:41
Showing 2 changed files
... ...
@@ -229,7 +229,7 @@ func (b *Builder) build(stdout io.Writer, stderr io.Writer, out io.Writer) (stri
229 229
 	if len(b.options.Labels) > 0 {
230 230
 		line := "LABEL "
231 231
 		for k, v := range b.options.Labels {
232
-			line += fmt.Sprintf("%q=%q ", k, v)
232
+			line += fmt.Sprintf("%q='%s' ", k, v)
233 233
 		}
234 234
 		_, node, err := parser.ParseLine(line, &b.directive)
235 235
 		if err != nil {
... ...
@@ -6632,6 +6632,19 @@ func (s *DockerSuite) TestBuildLabelsOverride(c *check.C) {
6632 6632
 		c.Fatalf("Labels %s, expected %s", res, expected)
6633 6633
 	}
6634 6634
 
6635
+	// Command line option labels with env var
6636
+	name = "scratchz"
6637
+	expected = `{"bar":"$PATH"}`
6638
+	_, err = buildImage(name,
6639
+		`FROM scratch`,
6640
+		true, "--label", "bar=$PATH")
6641
+	c.Assert(err, check.IsNil)
6642
+
6643
+	res = inspectFieldJSON(c, name, "Config.Labels")
6644
+	if res != expected {
6645
+		c.Fatalf("Labels %s, expected %s", res, expected)
6646
+	}
6647
+
6635 6648
 }
6636 6649
 
6637 6650
 // Test case for #22855