Browse code

Engine: optional Logging field to disable custom logging in engine.

* The default behavior is preserved
* This disables the use of the `TEST` environment variable in engine.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)

Solomon Hykes authored on 2014/02/16 07:11:15
Showing 2 changed files
... ...
@@ -44,6 +44,7 @@ type Engine struct {
44 44
 	Stdout   io.Writer
45 45
 	Stderr   io.Writer
46 46
 	Stdin    io.Reader
47
+	Logging  bool
47 48
 }
48 49
 
49 50
 func (eng *Engine) Root() string {
... ...
@@ -96,6 +97,7 @@ func New(root string) (*Engine, error) {
96 96
 		Stdout:   os.Stdout,
97 97
 		Stderr:   os.Stderr,
98 98
 		Stdin:    os.Stdin,
99
+		Logging:  true,
99 100
 	}
100 101
 	eng.Register("commands", func(job *Job) Status {
101 102
 		for _, name := range eng.commands() {
... ...
@@ -137,7 +139,9 @@ func (eng *Engine) Job(name string, args ...string) *Job {
137 137
 		Stderr: NewOutput(),
138 138
 		env:    &Env{},
139 139
 	}
140
-	job.Stderr.Add(utils.NopWriteCloser(eng.Stderr))
140
+	if eng.Logging {
141
+		job.Stderr.Add(utils.NopWriteCloser(eng.Stderr))
142
+	}
141 143
 	handler, exists := eng.handlers[name]
142 144
 	if exists {
143 145
 		job.handler = handler
... ...
@@ -188,9 +192,9 @@ func (eng *Engine) ParseJob(input string) (*Job, error) {
188 188
 }
189 189
 
190 190
 func (eng *Engine) Logf(format string, args ...interface{}) (n int, err error) {
191
-	if os.Getenv("TEST") == "" {
192
-		prefixedFormat := fmt.Sprintf("[%s] %s\n", eng, strings.TrimRight(format, "\n"))
193
-		return fmt.Fprintf(eng.Stderr, prefixedFormat, args...)
191
+	if !eng.Logging {
192
+		return 0, nil
194 193
 	}
195
-	return 0, nil
194
+	prefixedFormat := fmt.Sprintf("[%s] %s\n", eng, strings.TrimRight(format, "\n"))
195
+	return fmt.Fprintf(eng.Stderr, prefixedFormat, args...)
196 196
 }
... ...
@@ -3,7 +3,6 @@ package engine
3 3
 import (
4 4
 	"fmt"
5 5
 	"io"
6
-	"os"
7 6
 	"strings"
8 7
 	"time"
9 8
 )
... ...
@@ -189,11 +188,8 @@ func (job *Job) Environ() map[string]string {
189 189
 }
190 190
 
191 191
 func (job *Job) Logf(format string, args ...interface{}) (n int, err error) {
192
-	if os.Getenv("TEST") == "" {
193
-		prefixedFormat := fmt.Sprintf("[%s] %s\n", job, strings.TrimRight(format, "\n"))
194
-		return fmt.Fprintf(job.Stderr, prefixedFormat, args...)
195
-	}
196
-	return 0, nil
192
+	prefixedFormat := fmt.Sprintf("[%s] %s\n", job, strings.TrimRight(format, "\n"))
193
+	return fmt.Fprintf(job.Stderr, prefixedFormat, args...)
197 194
 }
198 195
 
199 196
 func (job *Job) Printf(format string, args ...interface{}) (n int, err error) {