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