Merge "jiri: Add gosh.Pipeline, simplify AddStd{out,err}Writer."
diff --git a/bootstrap_jiri_test.go b/bootstrap_jiri_test.go
index f5fce52..3bdca29 100644
--- a/bootstrap_jiri_test.go
+++ b/bootstrap_jiri_test.go
@@ -15,7 +15,7 @@
 )
 
 func TestBootstrapJiri(t *testing.T) {
-	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf})
+	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf, PropagateChildOutput: true})
 	defer sh.Cleanup()
 
 	bootstrap, err := filepath.Abs("./scripts/bootstrap_jiri")
@@ -23,10 +23,7 @@
 		t.Fatalf("couldn't determine absolute path to bootstrap_jiri script")
 	}
 	rootDir := filepath.Join(sh.MakeTempDir(), "root")
-	c := sh.Cmd(bootstrap, []string{rootDir}...)
-	c.AddStdoutWriter(gosh.NopWriteCloser(os.Stdout))
-	c.AddStderrWriter(gosh.NopWriteCloser(os.Stderr))
-	stdout, stderr := c.StdoutStderr()
+	stdout, stderr := sh.Cmd(bootstrap, rootDir).StdoutStderr()
 	if got, want := stdout, fmt.Sprintf("Please add %s to your PATH.\n", filepath.Join(rootDir, ".jiri_root", "scripts")); got != want {
 		t.Errorf("stdout got %q, want %q", got, want)
 	}
@@ -42,7 +39,7 @@
 }
 
 func TestBootstrapJiriAlreadyExists(t *testing.T) {
-	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf})
+	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf, PropagateChildOutput: true})
 	defer sh.Cleanup()
 
 	bootstrap, err := filepath.Abs("./scripts/bootstrap_jiri")
@@ -50,9 +47,7 @@
 		t.Fatalf("couldn't determine absolute path to bootstrap_jiri script")
 	}
 	rootDir := sh.MakeTempDir()
-	c := sh.Cmd(bootstrap, []string{rootDir}...)
-	c.AddStdoutWriter(gosh.NopWriteCloser(os.Stdout))
-	c.AddStderrWriter(gosh.NopWriteCloser(os.Stderr))
+	c := sh.Cmd(bootstrap, rootDir)
 	c.ExitErrorIsOk = true
 	stdout, stderr := c.StdoutStderr()
 	if c.Err == nil {
diff --git a/which_test.go b/which_test.go
index 1e5383d..dbe46f1 100644
--- a/which_test.go
+++ b/which_test.go
@@ -6,7 +6,6 @@
 
 import (
 	"fmt"
-	"os"
 	"path/filepath"
 	"testing"
 
@@ -14,8 +13,9 @@
 )
 
 func TestWhich(t *testing.T) {
-	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf})
+	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf, PropagateChildOutput: true})
 	defer sh.Cleanup()
+
 	jiriBinary := sh.BuildGoPkg("v.io/jiri")
 	stdout, stderr := sh.Cmd(jiriBinary, []string{"which"}...).StdoutStderr()
 	if got, want := stdout, fmt.Sprintf("# binary\n%s\n", jiriBinary); got != want {
@@ -28,17 +28,14 @@
 
 // TestWhichScript tests the behavior of "jiri which" for the shim script.
 func TestWhichScript(t *testing.T) {
-	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf})
+	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf, PropagateChildOutput: true})
 	defer sh.Cleanup()
 
 	jiriScript, err := filepath.Abs("./scripts/jiri")
 	if err != nil {
 		t.Fatalf("couldn't determine absolute path to jiri script")
 	}
-	c := sh.Cmd(jiriScript, []string{"which"}...)
-	c.AddStdoutWriter(gosh.NopWriteCloser(os.Stdout))
-	c.AddStderrWriter(gosh.NopWriteCloser(os.Stderr))
-	stdout, stderr := c.StdoutStderr()
+	stdout, stderr := sh.Cmd(jiriScript, "which").StdoutStderr()
 	if got, want := stdout, fmt.Sprintf("# script\n%s\n", jiriScript); got != want {
 		t.Errorf("stdout got %q, want %q", got, want)
 	}