Merge "ref: Change gosh.Cmd.AddStdoutWriter to take an io.WriteCloser"
diff --git a/services/cluster/vkube/vkube_v23_test.go b/services/cluster/vkube/vkube_v23_test.go
index 8a1a0ae..6db39e6 100644
--- a/services/cluster/vkube/vkube_v23_test.go
+++ b/services/cluster/vkube/vkube_v23_test.go
@@ -7,7 +7,6 @@
 import (
 	"flag"
 	"fmt"
-	"io"
 	"io/ioutil"
 	"math/rand"
 	"os"
@@ -17,6 +16,7 @@
 	"testing"
 	"text/template"
 
+	"v.io/x/lib/gosh"
 	"v.io/x/lib/textutil"
 	"v.io/x/ref/lib/v23test"
 	"v.io/x/ref/test/testutil"
@@ -65,10 +65,10 @@
 				// Note, creds do not affect non-Vanadium commands.
 				c := sh.Cmd(name, args...).WithCredentials(creds)
 				c.ExitErrorIsOk = true
-				// Wrap os.Stdout in a MultiWriter so that PrefixLineWriter.Close
-				// doesn't close it.
-				c.AddStdoutWriter(textutil.PrefixLineWriter(io.MultiWriter(os.Stdout), filepath.Base(name)+"> "))
+				prefix := textutil.PrefixLineWriter(os.Stdout, filepath.Base(name)+"> ")
+				c.AddStdoutWriter(gosh.NopWriteCloser(prefix))
 				stdout := c.Stdout()
+				prefix.Flush()
 				if expectSuccess && c.Err != nil {
 					t.Error(testutil.FormatLogLine(2, "Unexpected failure: %s %s :%v", name, strings.Join(args, " "), c.Err))
 				} else if !expectSuccess && c.Err == nil {
diff --git a/services/device/mgmt_v23_test.go b/services/device/mgmt_v23_test.go
index ef6e4e4..9ffb6b7 100644
--- a/services/device/mgmt_v23_test.go
+++ b/services/device/mgmt_v23_test.go
@@ -50,6 +50,7 @@
 	"testing"
 	"time"
 
+	"v.io/x/lib/gosh"
 	"v.io/x/ref"
 	"v.io/x/ref/lib/v23test"
 	_ "v.io/x/ref/runtime/factories/generic"
@@ -281,7 +282,7 @@
 			// if the name doesn't exist.
 			c := withArgs(namespaceBin, "resolve", name)
 			c.ExitErrorIsOk = true
-			c.AddStderrWriter(os.Stderr)
+			c.AddStderrWriter(gosh.NopWriteCloser(os.Stderr))
 			if res = tr(c.Stdout()); len(res) > 0 {
 				return nil
 			}
@@ -473,7 +474,7 @@
 			// if the name doesn't exist.
 			c := withArgs(namespaceBin, "resolve", name)
 			c.ExitErrorIsOk = true
-			c.AddStderrWriter(os.Stderr)
+			c.AddStderrWriter(gosh.NopWriteCloser(os.Stderr))
 			switch res = tr(c.Stdout()); {
 			case res == "":
 				return testutil.TryAgain(errors.New("resolve returned nothing"))
@@ -535,7 +536,7 @@
 			// if the name doesn't exist.
 			c := withArgs(namespaceBin, "resolve", name)
 			c.ExitErrorIsOk = true
-			c.AddStderrWriter(os.Stderr)
+			c.AddStderrWriter(gosh.NopWriteCloser(os.Stderr))
 			if res = tr(c.Stdout()); len(res) == 0 {
 				return nil
 			}