diff options
author | Alex Brainman <alex.brainman@gmail.com> | 2010-08-09 11:21:20 +1000 |
---|---|---|
committer | Alex Brainman <alex.brainman@gmail.com> | 2010-08-09 11:21:20 +1000 |
commit | 175a8fd142bac6b53b4c3d43c9a942e1e86565b3 (patch) | |
tree | 36a2100e7eb20eed70cd079e0f82b286ce5d9ac5 | |
parent | 37b27bbab8c7c3a164ffdb9b03a8f770e55a2d67 (diff) | |
download | go-175a8fd142bac6b53b4c3d43c9a942e1e86565b3.tar.gz |
os: fix ForkExec() handling of envv == nil
R=golang-dev, r
CC=golang-dev
http://codereview.appspot.com/1913047
Committer: Alex Brainman <alex.brainman@gmail.com>
-rw-r--r-- | src/pkg/exec/exec_test.go | 23 | ||||
-rw-r--r-- | src/pkg/os/exec.go | 3 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/pkg/exec/exec_test.go b/src/pkg/exec/exec_test.go index 3e4ab7d78..898f42582 100644 --- a/src/pkg/exec/exec_test.go +++ b/src/pkg/exec/exec_test.go @@ -8,6 +8,7 @@ import ( "io" "io/ioutil" "testing" + "os" ) func TestRunCat(t *testing.T) { @@ -84,3 +85,25 @@ func TestMergeWithStdout(t *testing.T) { t.Fatal("close:", err) } } + +func TestAddEnvVar(t *testing.T) { + err := os.Setenv("NEWVAR", "hello world") + if err != nil { + t.Fatal("setenv:", err) + } + cmd, err := Run("/bin/sh", []string{"sh", "-c", "echo $NEWVAR"}, nil, "", + DevNull, Pipe, DevNull) + if err != nil { + t.Fatal("run:", err) + } + buf, err := ioutil.ReadAll(cmd.Stdout) + if err != nil { + t.Fatal("read:", err) + } + if string(buf) != "hello world\n" { + t.Fatalf("read: got %q", buf) + } + if err = cmd.Close(); err != nil { + t.Fatal("close:", err) + } +} diff --git a/src/pkg/os/exec.go b/src/pkg/os/exec.go index d55acbaa7..c0831cab6 100644 --- a/src/pkg/os/exec.go +++ b/src/pkg/os/exec.go @@ -16,6 +16,9 @@ import ( // will cause the child to have no open file descriptor with that index. // If dir is not empty, the child chdirs into the directory before execing the program. func ForkExec(argv0 string, argv []string, envv []string, dir string, fd []*File) (pid int, err Error) { + if envv == nil { + envv = Environ() + } // Create array of integer (system) fds. intfd := make([]int, len(fd)) for i, f := range fd { |