浏览代码

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 11 年之前
父节点
当前提交
ea2fba5ce0
共有 2 个文件被更改,包括 11 次插入11 次删除
  1. 9 5
      engine/engine.go
  2. 2 6
      engine/job.go

+ 9 - 5
engine/engine.go

@@ -44,6 +44,7 @@ type Engine struct {
 	Stdout   io.Writer
 	Stderr   io.Writer
 	Stdin    io.Reader
+	Logging  bool
 }
 
 func (eng *Engine) Root() string {
@@ -96,6 +97,7 @@ func New(root string) (*Engine, error) {
 		Stdout:   os.Stdout,
 		Stderr:   os.Stderr,
 		Stdin:    os.Stdin,
+		Logging:  true,
 	}
 	eng.Register("commands", func(job *Job) Status {
 		for _, name := range eng.commands() {
@@ -137,7 +139,9 @@ func (eng *Engine) Job(name string, args ...string) *Job {
 		Stderr: NewOutput(),
 		env:    &Env{},
 	}
-	job.Stderr.Add(utils.NopWriteCloser(eng.Stderr))
+	if eng.Logging {
+		job.Stderr.Add(utils.NopWriteCloser(eng.Stderr))
+	}
 	handler, exists := eng.handlers[name]
 	if exists {
 		job.handler = handler
@@ -188,9 +192,9 @@ func (eng *Engine) ParseJob(input string) (*Job, error) {
 }
 
 func (eng *Engine) Logf(format string, args ...interface{}) (n int, err error) {
-	if os.Getenv("TEST") == "" {
-		prefixedFormat := fmt.Sprintf("[%s] %s\n", eng, strings.TrimRight(format, "\n"))
-		return fmt.Fprintf(eng.Stderr, prefixedFormat, args...)
+	if !eng.Logging {
+		return 0, nil
 	}
-	return 0, nil
+	prefixedFormat := fmt.Sprintf("[%s] %s\n", eng, strings.TrimRight(format, "\n"))
+	return fmt.Fprintf(eng.Stderr, prefixedFormat, args...)
 }

+ 2 - 6
engine/job.go

@@ -3,7 +3,6 @@ package engine
 import (
 	"fmt"
 	"io"
-	"os"
 	"strings"
 	"time"
 )
@@ -189,11 +188,8 @@ func (job *Job) Environ() map[string]string {
 }
 
 func (job *Job) Logf(format string, args ...interface{}) (n int, err error) {
-	if os.Getenv("TEST") == "" {
-		prefixedFormat := fmt.Sprintf("[%s] %s\n", job, strings.TrimRight(format, "\n"))
-		return fmt.Fprintf(job.Stderr, prefixedFormat, args...)
-	}
-	return 0, nil
+	prefixedFormat := fmt.Sprintf("[%s] %s\n", job, strings.TrimRight(format, "\n"))
+	return fmt.Fprintf(job.Stderr, prefixedFormat, args...)
 }
 
 func (job *Job) Printf(format string, args ...interface{}) (n int, err error) {