1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-08-06 19:44:01 +08:00

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.
This commit is contained in:
Hector Sanjuan
2024-11-27 19:35:15 +01:00
committed by GitHub
parent 3b2c2698e7
commit 02995d5d7d

View File

@ -3,6 +3,7 @@ package harness
import (
"fmt"
"io"
"os"
"os/exec"
"strings"
)
@ -60,8 +61,27 @@ func environToMap(environ []string) map[string]string {
func (r *Runner) Run(req RunRequest) *RunResult {
cmd := exec.Command(req.Path, req.Args...)
stdout := &Buffer{}
stderr := &Buffer{}
var stdout io.Writer
var stderr io.Writer
outbuf := &Buffer{}
errbuf := &Buffer{}
if r.Verbose {
or, ow := io.Pipe()
errr, errw := io.Pipe()
stdout = io.MultiWriter(outbuf, ow)
stderr = io.MultiWriter(errbuf, errw)
go func() {
_, _ = io.Copy(os.Stdout, or)
}()
go func() {
_, _ = io.Copy(os.Stderr, errr)
}()
} else {
stdout = outbuf
stderr = errbuf
}
cmd.Stdout = stdout
cmd.Stderr = stderr
cmd.Dir = r.Dir
@ -83,8 +103,8 @@ func (r *Runner) Run(req RunRequest) *RunResult {
err := req.RunFunc(cmd)
result := RunResult{
Stdout: stdout,
Stderr: stderr,
Stdout: outbuf,
Stderr: errbuf,
Cmd: cmd,
Err: err,
}