1package repository
2
3import (
4 "io/ioutil"
5 "log"
6 "os"
7 "testing"
8)
9
10// This is intended for testing only
11
12func CreateTestRepo(bare bool) *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) (*GitRepo, error)
21
22 if bare {
23 creator = InitBareGitRepo
24 } else {
25 creator = 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 CleanupTestRepos(t testing.TB, repos ...Repo) {
44 var firstErr error
45 for _, repo := range repos {
46 path := repo.GetPath()
47 // fmt.Println("Cleaning repo:", path)
48 err := os.RemoveAll(path)
49 if err != nil {
50 log.Println(err)
51 if firstErr == nil {
52 firstErr = err
53 }
54 }
55 }
56
57 if firstErr != nil {
58 t.Fatal(firstErr)
59 }
60}
61
62func SetupReposAndRemote(t testing.TB) (repoA, repoB, remote *GitRepo) {
63 repoA = CreateTestRepo(false)
64 repoB = CreateTestRepo(false)
65 remote = CreateTestRepo(true)
66
67 remoteAddr := "file://" + remote.GetPath()
68
69 err := repoA.AddRemote("origin", remoteAddr)
70 if err != nil {
71 t.Fatal(err)
72 }
73
74 err = repoB.AddRemote("origin", remoteAddr)
75 if err != nil {
76 t.Fatal(err)
77 }
78
79 return repoA, repoB, remote
80}