1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Copyright 2021 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- //go:build windows
- package exec_test
- import (
- "io"
- "os"
- "os/exec"
- "strconv"
- "syscall"
- "testing"
- )
- func TestPipePassing(t *testing.T) {
- r, w, err := os.Pipe()
- if err != nil {
- t.Error(err)
- }
- const marker = "arrakis, dune, desert planet"
- childProc := helperCommand(t, "pipehandle", strconv.FormatUint(uint64(w.Fd()), 16), marker)
- childProc.SysProcAttr = &syscall.SysProcAttr{AdditionalInheritedHandles: []syscall.Handle{syscall.Handle(w.Fd())}}
- err = childProc.Start()
- if err != nil {
- t.Error(err)
- }
- w.Close()
- response, err := io.ReadAll(r)
- if err != nil {
- t.Error(err)
- }
- r.Close()
- if string(response) != marker {
- t.Errorf("got %q; want %q", string(response), marker)
- }
- err = childProc.Wait()
- if err != nil {
- t.Error(err)
- }
- }
- func TestNoInheritHandles(t *testing.T) {
- cmd := exec.Command("cmd", "/c exit 88")
- cmd.SysProcAttr = &syscall.SysProcAttr{NoInheritHandles: true}
- err := cmd.Run()
- exitError, ok := err.(*exec.ExitError)
- if !ok {
- t.Fatalf("got error %v; want ExitError", err)
- }
- if exitError.ExitCode() != 88 {
- t.Fatalf("got exit code %d; want 88", exitError.ExitCode())
- }
- }
|