1package execenv
2
3import (
4 "bytes"
5 "fmt"
6 "testing"
7
8 "github.com/stretchr/testify/require"
9
10 "github.com/MichaelMure/git-bug/cache"
11 "github.com/MichaelMure/git-bug/repository"
12)
13
14type TestOut struct {
15 *bytes.Buffer
16}
17
18func (te *TestOut) Printf(format string, a ...interface{}) {
19 _, _ = fmt.Fprintf(te.Buffer, format, a...)
20}
21
22func (te *TestOut) Print(a ...interface{}) {
23 _, _ = fmt.Fprint(te.Buffer, a...)
24}
25
26func (te *TestOut) Println(a ...interface{}) {
27 _, _ = fmt.Fprintln(te.Buffer, a...)
28}
29
30func NewTestEnv(t *testing.T) *Env {
31 t.Helper()
32
33 repo := repository.CreateGoGitTestRepo(t, false)
34
35 buf := new(bytes.Buffer)
36
37 backend, events, err := cache.NewRepoCache(repo)
38 require.NoError(t, err)
39 for event := range events {
40 require.NoError(t, event.Err)
41 }
42
43 t.Cleanup(func() {
44 backend.Close()
45 })
46
47 return &Env{
48 Repo: repo,
49 Backend: backend,
50 Out: &TestOut{buf},
51 Err: &TestOut{buf},
52 }
53}