| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package fuzz |
| |
| import ( |
| "os" |
| "os/exec" |
| |
| "github.com/golang/glog" |
| ) |
| |
| // ExecCommand is the function used by CreateProcess to create Cmd objects. Test code can replace |
| // the default to mock process creation. |
| var ExecCommand = exec.Command |
| |
| // NewCommand returns a Cmd that can be used to start a new os.Process by calling Run or Start. |
| // It is provided to allow the test code to mock process creation. |
| func NewCommand(name string, args ...string) *exec.Cmd { |
| cmd := ExecCommand(name, args...) |
| glog.Infof("Running local command: %q", cmd) |
| return cmd |
| } |
| |
| // CreateProcessForeground is like CreateProcess but passes through any command output |
| func CreateProcessForeground(name string, args ...string) error { |
| cmd := NewCommand(name, args...) |
| cmd.Stderr, cmd.Stdout = os.Stderr, os.Stdout |
| return cmd.Run() |
| } |
| |
| // Run a command to completion |
| func CreateProcess(name string, args ...string) error { |
| cmd := NewCommand(name, args...) |
| return cmd.Run() |
| } |