diff options
author | Michael Muré <batolettre@gmail.com> | 2023-01-17 20:14:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-17 20:14:10 +0100 |
commit | e689cc506775ec1daccaae9ec35c7a28b48b2f05 (patch) | |
tree | 7d86adb1fb9d290f5acfa3b36f606f4e24f01fa7 /commands/execenv/env_testing.go | |
parent | 2a78fd9c94960d86264e39d37e5a3e25b0a8358d (diff) | |
parent | f011452a2d7ed26d522896a1dab090d7ede05cf1 (diff) | |
download | git-bug-e689cc506775ec1daccaae9ec35c7a28b48b2f05.tar.gz git-bug-e689cc506775ec1daccaae9ec35c7a28b48b2f05.zip |
Merge pull request #994 from MichaelMure/feat/detect-stdin-stdout-mode
feat: detect `os.Stdin`/`os.Stdout` redirection/pipe mode
Diffstat (limited to 'commands/execenv/env_testing.go')
-rw-r--r-- | commands/execenv/env_testing.go | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/commands/execenv/env_testing.go b/commands/execenv/env_testing.go index 6eb9c69d..03fe0430 100644 --- a/commands/execenv/env_testing.go +++ b/commands/execenv/env_testing.go @@ -13,10 +13,26 @@ import ( "github.com/MichaelMure/git-bug/repository" ) +var _ In = &TestIn{} + +type TestIn struct { + *bytes.Buffer + forceIsTerminal bool +} + +func (t *TestIn) ForceIsTerminal(value bool) { + t.forceIsTerminal = value +} + +func (t *TestIn) IsTerminal() bool { + return t.forceIsTerminal +} + var _ Out = &TestOut{} type TestOut struct { *bytes.Buffer + forceIsTerminal bool } func (te *TestOut) Printf(format string, a ...interface{}) { @@ -40,17 +56,31 @@ func (te *TestOut) PrintJSON(v interface{}) error { return nil } +func (te *TestOut) IsTerminal() bool { + return te.forceIsTerminal +} + func (te *TestOut) Raw() io.Writer { return te.Buffer } +func (te *TestOut) ForceIsTerminal(value bool) { + te.forceIsTerminal = value +} + func NewTestEnv(t *testing.T) *Env { t.Helper() + return newTestEnv(t, false) +} + +func NewTestEnvTerminal(t *testing.T) *Env { + t.Helper() + return newTestEnv(t, true) +} +func newTestEnv(t *testing.T, isTerminal bool) *Env { repo := repository.CreateGoGitTestRepo(t, false) - buf := new(bytes.Buffer) - backend, err := cache.NewRepoCacheNoEvents(repo) require.NoError(t, err) @@ -61,7 +91,8 @@ func NewTestEnv(t *testing.T) *Env { return &Env{ Repo: repo, Backend: backend, - Out: &TestOut{buf}, - Err: &TestOut{buf}, + In: &TestIn{Buffer: &bytes.Buffer{}, forceIsTerminal: isTerminal}, + Out: &TestOut{Buffer: &bytes.Buffer{}, forceIsTerminal: isTerminal}, + Err: &TestOut{Buffer: &bytes.Buffer{}, forceIsTerminal: isTerminal}, } } |