diff --git a/src/pkg/Makefile b/src/pkg/Makefile index cfb16d2004a..48649846b82 100644 --- a/src/pkg/Makefile +++ b/src/pkg/Makefile @@ -197,7 +197,6 @@ endif # Disable tests that windows cannot run yet. ifeq ($(GOOS),windows) -NOTEST+=exec # no pipe NOTEST+=os/signal # no signals NOTEST+=path # tree walking does not work NOTEST+=syslog # no network diff --git a/src/pkg/exec/exec_test.go b/src/pkg/exec/exec_test.go index 04f72cf833b..3a3d3b1a53e 100644 --- a/src/pkg/exec/exec_test.go +++ b/src/pkg/exec/exec_test.go @@ -9,15 +9,23 @@ import ( "io/ioutil" "testing" "os" + "runtime" ) -func TestRunCat(t *testing.T) { - cat, err := LookPath("cat") - if err != nil { - t.Fatal("cat: ", err) +func run(argv []string, stdin, stdout, stderr int) (p *Cmd, err os.Error) { + if runtime.GOOS == "windows" { + argv = append([]string{"cmd", "/c"}, argv...) } - cmd, err := Run(cat, []string{"cat"}, nil, "", - Pipe, Pipe, DevNull) + exe, err := LookPath(argv[0]) + if err != nil { + return nil, err + } + p, err = Run(exe, argv, nil, "", stdin, stdout, stderr) + return p, err +} + +func TestRunCat(t *testing.T) { + cmd, err := run([]string{"cat"}, Pipe, Pipe, DevNull) if err != nil { t.Fatal("run:", err) } @@ -36,11 +44,7 @@ func TestRunCat(t *testing.T) { } func TestRunEcho(t *testing.T) { - echo, err := LookPath("echo") - if err != nil { - t.Fatal("echo: ", err) - } - cmd, err := Run(echo, []string{"echo", "hello", "world"}, nil, "", + cmd, err := run([]string{"sh", "-c", "echo hello world"}, DevNull, Pipe, DevNull) if err != nil { t.Fatal("run:", err) @@ -58,11 +62,7 @@ func TestRunEcho(t *testing.T) { } func TestStderr(t *testing.T) { - sh, err := LookPath("sh") - if err != nil { - t.Fatal("sh: ", err) - } - cmd, err := Run(sh, []string{"sh", "-c", "echo hello world 1>&2"}, nil, "", + cmd, err := run([]string{"sh", "-c", "echo hello world 1>&2"}, DevNull, DevNull, Pipe) if err != nil { t.Fatal("run:", err) @@ -80,11 +80,7 @@ func TestStderr(t *testing.T) { } func TestMergeWithStdout(t *testing.T) { - sh, err := LookPath("sh") - if err != nil { - t.Fatal("sh: ", err) - } - cmd, err := Run(sh, []string{"sh", "-c", "echo hello world 1>&2"}, nil, "", + cmd, err := run([]string{"sh", "-c", "echo hello world 1>&2"}, DevNull, Pipe, MergeWithStdout) if err != nil { t.Fatal("run:", err) @@ -106,11 +102,7 @@ func TestAddEnvVar(t *testing.T) { if err != nil { t.Fatal("setenv:", err) } - sh, err := LookPath("sh") - if err != nil { - t.Fatal("sh: ", err) - } - cmd, err := Run(sh, []string{"sh", "-c", "echo $NEWVAR"}, nil, "", + cmd, err := run([]string{"sh", "-c", "echo $NEWVAR"}, DevNull, Pipe, DevNull) if err != nil { t.Fatal("run:", err)