Commit dbef0711 authored by Alex Brainman's avatar Alex Brainman

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

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/1913047
parent 893fdbbe
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
"io" "io"
"io/ioutil" "io/ioutil"
"testing" "testing"
"os"
) )
func TestRunCat(t *testing.T) { func TestRunCat(t *testing.T) {
...@@ -84,3 +85,25 @@ func TestMergeWithStdout(t *testing.T) { ...@@ -84,3 +85,25 @@ func TestMergeWithStdout(t *testing.T) {
t.Fatal("close:", err) 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)
}
}
...@@ -16,6 +16,9 @@ import ( ...@@ -16,6 +16,9 @@ import (
// will cause the child to have no open file descriptor with that index. // 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. // 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) { 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. // Create array of integer (system) fds.
intfd := make([]int, len(fd)) intfd := make([]int, len(fd))
for i, f := range fd { for i, f := range fd {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment