]> Cypherpunks repositories - gostls13.git/commitdiff
os: change TestForkExec so it can run on windows
authorYasuhiro Matsumoto <mattn.jp@gmail.com>
Tue, 19 Oct 2010 22:46:24 +0000 (09:46 +1100)
committerAlex Brainman <alex.brainman@gmail.com>
Tue, 19 Oct 2010 22:46:24 +0000 (09:46 +1100)
R=brainman, vcc, Joe Poirier, rsc
CC=golang-dev
https://golang.org/cl/2530041

src/pkg/os/os_test.go

index 5a4e1a865f546b2d78282761ab7a4c96626d932a..9cc2eb54a58100764a31eaf55c11a7e74106d288 100644 (file)
@@ -410,15 +410,24 @@ func TestRename(t *testing.T) {
 }
 
 func TestForkExec(t *testing.T) {
-       // TODO(brainman): Try to enable this test once ForkExec is working.
-       if syscall.OS == "windows" {
-               return
-       }
+       var cmd, adir, expect string
+       var args []string
        r, w, err := Pipe()
        if err != nil {
                t.Fatalf("Pipe: %v", err)
        }
-       pid, err := ForkExec("/bin/pwd", []string{"pwd"}, nil, "/", []*File{nil, w, Stderr})
+       if syscall.OS == "windows" {
+               cmd = Getenv("COMSPEC")
+               args = []string{Getenv("COMSPEC"), "/c cd"}
+               adir = Getenv("SystemRoot")
+               expect = Getenv("SystemRoot") + "\r\n"
+       } else {
+               cmd = "/bin/pwd"
+               args = []string{"pwd"}
+               adir = "/"
+               expect = "/\n"
+       }
+       pid, err := ForkExec(cmd, args, nil, adir, []*File{nil, w, Stderr})
        if err != nil {
                t.Fatalf("ForkExec: %v", err)
        }
@@ -427,9 +436,9 @@ func TestForkExec(t *testing.T) {
        var b bytes.Buffer
        io.Copy(&b, r)
        output := b.String()
-       expect := "/\n"
        if output != expect {
-               t.Errorf("exec /bin/pwd returned %q wanted %q", output, expect)
+               args[0] = cmd
+               t.Errorf("exec %q returned %q wanted %q", strings.Join(args, " "), output, expect)
        }
        Wait(pid, 0)
 }