git_testing.go

 1package repository
 2
 3import (
 4	"io/ioutil"
 5	"log"
 6)
 7
 8// This is intended for testing only
 9
10func CreateTestRepo(bare bool) TestedRepo {
11	dir, err := ioutil.TempDir("", "")
12	if err != nil {
13		log.Fatal(err)
14	}
15
16	var creator func(string) (*GitRepo, error)
17
18	if bare {
19		creator = InitBareGitRepo
20	} else {
21		creator = InitGitRepo
22	}
23
24	repo, err := creator(dir)
25	if err != nil {
26		log.Fatal(err)
27	}
28
29	config := repo.LocalConfig()
30	if err := config.StoreString("user.name", "testuser"); err != nil {
31		log.Fatal("failed to set user.name for test repository: ", err)
32	}
33	if err := config.StoreString("user.email", "testuser@example.com"); err != nil {
34		log.Fatal("failed to set user.email for test repository: ", err)
35	}
36
37	return repo
38}
39
40func SetupReposAndRemote() (repoA, repoB, remote TestedRepo) {
41	repoA = CreateTestRepo(false)
42	repoB = CreateTestRepo(false)
43	remote = CreateTestRepo(true)
44
45	remoteAddr := "file://" + remote.GetPath()
46
47	err := repoA.AddRemote("origin", remoteAddr)
48	if err != nil {
49		log.Fatal(err)
50	}
51
52	err = repoB.AddRemote("origin", remoteAddr)
53	if err != nil {
54		log.Fatal(err)
55	}
56
57	return repoA, repoB, remote
58}