debian-forge-cli/internal/testutil/testutil_test.go
Michael Vogt e41cf0e429 testutil: add new CaptureStdio helper
This commit adds a new testutil.CaptureStdio helper so that we
can test external go modules that use os.Std{out,err} but now
allow mocking or overwriting.
2025-01-29 15:21:33 +00:00

36 lines
849 B
Go

package testutil_test
import (
"fmt"
"os"
"os/exec"
"testing"
"github.com/stretchr/testify/assert"
"github.com/osbuild/image-builder-cli/internal/testutil"
)
func TestMockCommand(t *testing.T) {
fakeCmd := testutil.MockCommand(t, "false", "exit 0")
defer fakeCmd.Restore()
err := exec.Command("false", "run1-arg1", "run1-arg2").Run()
assert.NoError(t, err)
err = exec.Command("false", "run2-arg1", "run2-arg2").Run()
assert.NoError(t, err)
assert.Equal(t, [][]string{
{"run1-arg1", "run1-arg2"},
{"run2-arg1", "run2-arg2"},
}, fakeCmd.Calls())
}
func TestCaptureStdout(t *testing.T) {
stdout, stderr := testutil.CaptureStdio(t, func() {
fmt.Fprintf(os.Stdout, "output on stdout")
fmt.Fprintf(os.Stderr, "output on stderr")
})
assert.Equal(t, "output on stdout", stdout)
assert.Equal(t, "output on stderr", stderr)
}