repo.go

 1package test
 2
 3import (
 4	"io/ioutil"
 5	"log"
 6	"os"
 7	"testing"
 8
 9	"github.com/MichaelMure/git-bug/repository"
10)
11
12func CreateRepo(bare bool) *repository.GitRepo {
13	dir, err := ioutil.TempDir("", "")
14	if err != nil {
15		log.Fatal(err)
16	}
17
18	// fmt.Println("Creating repo:", dir)
19
20	var creator func(string) (*repository.GitRepo, error)
21
22	if bare {
23		creator = repository.InitBareGitRepo
24	} else {
25		creator = repository.InitGitRepo
26	}
27
28	repo, err := creator(dir)
29	if err != nil {
30		log.Fatal(err)
31	}
32
33	if err := repo.StoreConfig("user.name", "testuser"); err != nil {
34		log.Fatal("failed to set user.name for test repository: ", err)
35	}
36	if err := repo.StoreConfig("user.email", "testuser@example.com"); err != nil {
37		log.Fatal("failed to set user.email for test repository: ", err)
38	}
39
40	return repo
41}
42
43func CleanupRepo(repo repository.Repo) error {
44	path := repo.GetPath()
45	// fmt.Println("Cleaning repo:", path)
46	return os.RemoveAll(path)
47}
48
49func SetupReposAndRemote(t testing.TB) (repoA, repoB, remote *repository.GitRepo) {
50	repoA = CreateRepo(false)
51	repoB = CreateRepo(false)
52	remote = CreateRepo(true)
53
54	remoteAddr := "file://" + remote.GetPath()
55
56	err := repoA.AddRemote("origin", remoteAddr)
57	if err != nil {
58		t.Fatal(err)
59	}
60
61	err = repoB.AddRemote("origin", remoteAddr)
62	if err != nil {
63		t.Fatal(err)
64	}
65
66	return repoA, repoB, remote
67}
68
69func CleanupRepos(repoA, repoB, remote *repository.GitRepo) {
70	if err := CleanupRepo(repoA); err != nil {
71		log.Println(err)
72	}
73	if err := CleanupRepo(repoB); err != nil {
74		log.Println(err)
75	}
76	if err := CleanupRepo(remote); err != nil {
77		log.Println(err)
78	}
79}