1
0
mirror of https://github.com/golang/go synced 2024-11-24 23:57:57 -07:00

os: fix ForkExec() handling of envv == nil

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/1913047
This commit is contained in:
Alex Brainman 2010-08-09 11:21:20 +10:00
parent 893fdbbe5d
commit dbef0711d4
2 changed files with 26 additions and 0 deletions

View File

@ -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)
}
}

View File

@ -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 {