Browse code

builder: properly communicate onbuild trigger information during subsequent builds.

Docker-DCO-1.1-Signed-off-by: Erik Hollensbe <github@hollensbe.org> (github: erikh)

Erik Hollensbe authored on 2014/09/24 05:31:42
Showing 2 changed files
... ...
@@ -377,7 +377,7 @@ func (b *Builder) processImageFrom(img *imagepkg.Image) error {
377 377
 	// FIXME rewrite this so that builder/parser is used; right now steps in
378 378
 	// onbuild are muted because we have no good way to represent the step
379 379
 	// number
380
-	for _, step := range onBuildTriggers {
380
+	for stepN, step := range onBuildTriggers {
381 381
 		splitStep := strings.Split(step, " ")
382 382
 		stepInstruction := strings.ToUpper(strings.Trim(splitStep[0], " "))
383 383
 		switch stepInstruction {
... ...
@@ -392,6 +392,7 @@ func (b *Builder) processImageFrom(img *imagepkg.Image) error {
392 392
 		// longer be necessary.
393 393
 
394 394
 		if f, ok := evaluateTable[strings.ToLower(stepInstruction)]; ok {
395
+			fmt.Fprintf(b.OutStream, "Trigger %d, %s\n", stepN, step)
395 396
 			if err := f(b, splitStep[1:], nil); err != nil {
396 397
 				return err
397 398
 			}
... ...
@@ -2142,3 +2142,25 @@ func TestBuildEmptyCmd(t *testing.T) {
2142 2142
 	}
2143 2143
 	logDone("build - empty cmd")
2144 2144
 }
2145
+
2146
+func TestBuildOnBuildOutput(t *testing.T) {
2147
+	name := "testbuildonbuildparent"
2148
+	defer deleteImages(name)
2149
+	if _, err := buildImage(name, "FROM busybox\nONBUILD RUN echo foo\n", true); err != nil {
2150
+		t.Fatal(err)
2151
+	}
2152
+
2153
+	childname := "testbuildonbuildchild"
2154
+	defer deleteImages(childname)
2155
+
2156
+	_, out, err := buildImageWithOut(name, "FROM "+name+"\nMAINTAINER quux\n", true)
2157
+	if err != nil {
2158
+		t.Fatal(err)
2159
+	}
2160
+
2161
+	if !strings.Contains(out, "Trigger 0, run echo foo") {
2162
+		t.Fatal("failed to find the ONBUILD output")
2163
+	}
2164
+
2165
+	logDone("build - onbuild output")
2166
+}