@cryptotaxi247 / kubo / commits / 02995d5d7

tests(cli/harness): use unused Verbose flag to pipe daemon outputs (#10601)

Obtain actual daemon output on the screen while debugging tests. Might be useful in the future even though it needs to manually set verbose somewhere.

Hector Sanjuan committed Nov 27, 2024 at 19:35 UTC 02995d5d7dd99250198003d9cb4c09dd6193c4b7
1 file changed +24 -4
test/cli/harness/run.go
+24 -4
@@ -3,6 +3,7 @@ package harness
3 import (
4 "fmt"
5 "io"
6 + "os"
7 "os/exec"
8 "strings"
9 )
@@ -60,8 +61,27 @@ func environToMap(environ []string) map[string]string {
61
62 func (r *Runner) Run(req RunRequest) *RunResult {
63 cmd := exec.Command(req.Path, req.Args...)
63 - stdout := &Buffer{}
64 - stderr := &Buffer{}
64 + var stdout io.Writer
65 + var stderr io.Writer
66 + outbuf := &Buffer{}
67 + errbuf := &Buffer{}
68 +
69 + if r.Verbose {
70 + or, ow := io.Pipe()
71 + errr, errw := io.Pipe()
72 + stdout = io.MultiWriter(outbuf, ow)
73 + stderr = io.MultiWriter(errbuf, errw)
74 + go func() {
75 + _, _ = io.Copy(os.Stdout, or)
76 + }()
77 + go func() {
78 + _, _ = io.Copy(os.Stderr, errr)
79 + }()
80 + } else {
81 + stdout = outbuf
82 + stderr = errbuf
83 + }
84 +
85 cmd.Stdout = stdout
86 cmd.Stderr = stderr
87 cmd.Dir = r.Dir
@@ -83,8 +103,8 @@ func (r *Runner) Run(req RunRequest) *RunResult {
103 err := req.RunFunc(cmd)
104
105 result := RunResult{
86 - Stdout: stdout,
87 - Stderr: stderr,
106 + Stdout: outbuf,
107 + Stderr: errbuf,
108 Cmd: cmd,
109 Err: err,
110 }