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}