From 49ab3ec5bffed7e2939d5ab9040d2d7deaa1ad67 Mon Sep 17 00:00:00 2001 From: nate smith Date: Tue, 1 Sep 2020 11:18:34 -0500 Subject: [PATCH] check for tty before creating colorables --- pkg/iostreams/iostreams.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/iostreams/iostreams.go b/pkg/iostreams/iostreams.go index 23f81fd44..e9b9c2220 100644 --- a/pkg/iostreams/iostreams.go +++ b/pkg/iostreams/iostreams.go @@ -103,12 +103,20 @@ func (s *IOStreams) TerminalWidth() int { } func System() *IOStreams { - return &IOStreams{ + stdoutIsTTY := isTerminal(os.Stdout) + stderrIsTTY := isTerminal(os.Stderr) + + io := &IOStreams{ In: os.Stdin, Out: colorable.NewColorable(os.Stdout), ErrOut: colorable.NewColorable(os.Stderr), - colorEnabled: os.Getenv("NO_COLOR") == "" && isTerminal(os.Stdout), + colorEnabled: os.Getenv("NO_COLOR") == "" && stdoutIsTTY, } + + // prevent duplicate isTerminal queries now that we know the answer + io.SetStdoutTTY(stdoutIsTTY) + io.SetStderrTTY(stderrIsTTY) + return io } func Test() (*IOStreams, *bytes.Buffer, *bytes.Buffer, *bytes.Buffer) {