env_testing.go

 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}