blob: 6e532152dc5fc2f502b19c2a3170853be77a1802 [file] [log] [blame]
// Copyright 2020 The Chromium OS 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 cmd contains the interface for running commands in packages such as iw and ping.
package cmd
import (
"context"
"chromiumos/tast/common/network/cmd"
"chromiumos/tast/common/testexec"
)
// LocalCmdRunner is the object used for running local commands.
type LocalCmdRunner struct {
NoLogOnError bool // Default false: dump log on error.
}
var _ cmd.Runner = (*LocalCmdRunner)(nil)
// Run runs a command and waits for its completion.
func (r *LocalCmdRunner) Run(ctx context.Context, cmd string, args ...string) error {
cc := testexec.CommandContext(ctx, cmd, args...)
if r.NoLogOnError {
return cc.Run()
}
return cc.Run(testexec.DumpLogOnError)
}
// Output runs a command, waits for its completion and returns stdout output of the command.
func (r *LocalCmdRunner) Output(ctx context.Context, cmd string, args ...string) ([]byte, error) {
cc := testexec.CommandContext(ctx, cmd, args...)
if r.NoLogOnError {
return cc.Output()
}
return cc.Output(testexec.DumpLogOnError)
}