aboutsummaryrefslogtreecommitdiffstats
path: root/commands/execenv/env_testing.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2023-01-17 20:14:10 +0100
committerGitHub <noreply@github.com>2023-01-17 20:14:10 +0100
commite689cc506775ec1daccaae9ec35c7a28b48b2f05 (patch)
tree7d86adb1fb9d290f5acfa3b36f606f4e24f01fa7 /commands/execenv/env_testing.go
parent2a78fd9c94960d86264e39d37e5a3e25b0a8358d (diff)
parentf011452a2d7ed26d522896a1dab090d7ede05cf1 (diff)
downloadgit-bug-e689cc506775ec1daccaae9ec35c7a28b48b2f05.tar.gz
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.go39
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},
}
}