"ruderich.org/simon/safcm/cmd/safcm-remote/run"
)
+// testRunner implements run.Runner to test commands without actually running
+// them.
type testRunner struct {
t *testing.T
- name string
expCmds []*exec.Cmd
resStdout [][]byte
resStderr [][]byte
return resErr
}
func (r *testRunner) CombinedOutput(cmd *exec.Cmd) ([]byte, error) {
+ r.t.Helper()
+
stdout, stderr, err := r.check("combinedOutput", cmd)
if stderr != nil {
// stdout also contains stderr
- r.t.Fatalf("%s: CombinedOutput: stderr != nil, but %v",
- r.name, stderr)
+ r.t.Fatalf("CombinedOutput: stderr != nil, but %v", stderr)
}
return stdout, err
}
func (r *testRunner) check(method string, cmd *exec.Cmd) (
[]byte, []byte, error) {
+ r.t.Helper()
if len(r.expCmds) == 0 {
- r.t.Fatalf("%s: %s: empty expCmds", r.name, method)
+ r.t.Fatalf("%s: empty expCmds", method)
}
if len(r.resStdout) == 0 {
- r.t.Fatalf("%s: %s: empty resStdout", r.name, method)
+ r.t.Fatalf("%s: empty resStdout", method)
}
if len(r.resStderr) == 0 {
- r.t.Fatalf("%s: %s: empty resStderr", r.name, method)
+ r.t.Fatalf("%s: empty resStderr", method)
}
if len(r.resError) == 0 {
- r.t.Fatalf("%s: %s: empty resError", r.name, method)
+ r.t.Fatalf("%s: empty resError", method)
}
exp := r.expCmds[0]
r.expCmds = r.expCmds[1:]
if !reflect.DeepEqual(exp, cmd) {
- r.t.Errorf("%s: %s: %s", r.name, method,
- cmp.Diff(exp, cmd, cmpopts.IgnoreUnexported(
- exec.Cmd{},
- bytes.Buffer{})))
+ opts := cmpopts.IgnoreUnexported(exec.Cmd{}, bytes.Buffer{})
+ r.t.Errorf("%s: %s", method, cmp.Diff(exp, cmd, opts))
}
var stdout, stderr []byte
res.wg.Done()
}()
- logger := log.NewLogger(logPrefix,
- func(level safcm.LogLevel, format string, a ...interface{}) {
- res.ch <- fmt.Sprintf("%d: %s", level,
- fmt.Sprintf(format, a...))
- })
+ logger := log.NewLogger(func(level safcm.LogLevel, msg string) {
+ res.ch <- fmt.Sprintf("%d: %s", level, msg)
+ })
return &Sync{
req: req,
cmd: run.NewCmd(runner, logger),
}
func (s *syncTestResult) Wait() []string {
+ s.runner.t.Helper()
+
close(s.ch)
s.wg.Wait()
// All expected commands must have been executed
if len(s.runner.expCmds) != 0 {
- s.runner.t.Errorf("%s: expCmds left: %v",
- s.runner.name, s.runner.expCmds)
+ s.runner.t.Errorf("expCmds left: %v", s.runner.expCmds)
}
if len(s.runner.resStdout) != 0 {
- s.runner.t.Errorf("%s: resStdout left: %v",
- s.runner.name, s.runner.resStdout)
+ s.runner.t.Errorf("resStdout left: %v", s.runner.resStdout)
}
if len(s.runner.resStderr) != 0 {
- s.runner.t.Errorf("%s: resStderr left: %v",
- s.runner.name, s.runner.resStderr)
+ s.runner.t.Errorf("resStderr left: %v", s.runner.resStderr)
}
if len(s.runner.resError) != 0 {
- s.runner.t.Errorf("%s: resError left: %v",
- s.runner.name, s.runner.resError)
+ s.runner.t.Errorf("resError left: %v", s.runner.resError)
}
return s.dbg