mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
syscall: StartProcess fixes for windows
- StartProcess will work with relative (to attr.Dir, not current directory) executable filenames - StartProcess will only work if executable filename points to the real file, it will not search for executable in the $PATH list and others (see CreateProcess manual for details) - StartProcess argv strings can contain any characters R=golang-dev, r CC=golang-dev https://golang.org/cl/4306041
This commit is contained in:
parent
eccf31b744
commit
913c8d7397
5 changed files with 311 additions and 142 deletions
|
|
@ -118,3 +118,55 @@ func TestAddEnvVar(t *testing.T) {
|
|||
t.Fatal("close:", err)
|
||||
}
|
||||
}
|
||||
|
||||
var tryargs = []string{
|
||||
`2`,
|
||||
`2 `,
|
||||
"2 \t",
|
||||
`2" "`,
|
||||
`2 ab `,
|
||||
`2 "ab" `,
|
||||
`2 \ `,
|
||||
`2 \\ `,
|
||||
`2 \" `,
|
||||
`2 \`,
|
||||
`2\`,
|
||||
`2"`,
|
||||
`2\"`,
|
||||
`2 "`,
|
||||
`2 \"`,
|
||||
``,
|
||||
`2 ^ `,
|
||||
`2 \^`,
|
||||
}
|
||||
|
||||
func TestArgs(t *testing.T) {
|
||||
for _, a := range tryargs {
|
||||
argv := []string{
|
||||
"awk",
|
||||
`BEGIN{printf("%s|%s|%s",ARGV[1],ARGV[2],ARGV[3])}`,
|
||||
"/dev/null",
|
||||
a,
|
||||
"EOF",
|
||||
}
|
||||
exe, err := LookPath(argv[0])
|
||||
if err != nil {
|
||||
t.Fatal("run:", err)
|
||||
}
|
||||
cmd, err := Run(exe, argv, nil, "", DevNull, Pipe, DevNull)
|
||||
if err != nil {
|
||||
t.Fatal("run:", err)
|
||||
}
|
||||
buf, err := ioutil.ReadAll(cmd.Stdout)
|
||||
if err != nil {
|
||||
t.Fatal("read:", err)
|
||||
}
|
||||
expect := "/dev/null|" + a + "|EOF"
|
||||
if string(buf) != expect {
|
||||
t.Errorf("read: got %q expect %q", buf, expect)
|
||||
}
|
||||
if err = cmd.Close(); err != nil {
|
||||
t.Fatal("close:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue