env_testing.go

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