aboutsummaryrefslogtreecommitdiffstats
path: root/repository/repo_testing.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2020-09-27 00:54:14 +0200
committerMichael Muré <batolettre@gmail.com>2020-09-29 20:42:21 +0200
commit71b7eb14010be0c7799b4d5394798c89e379891b (patch)
treef82d4b7bc6be5165c093d4feb18f5ee642c2c3e6 /repository/repo_testing.go
parentc87e9abacfbdc4f221e2e328d4b229d6191f42e9 (diff)
downloadgit-bug-71b7eb14010be0c7799b4d5394798c89e379891b.tar.gz
repo: implement local/global/any config everywhere
Diffstat (limited to 'repository/repo_testing.go')
-rw-r--r--repository/repo_testing.go299
1 files changed, 154 insertions, 145 deletions
diff --git a/repository/repo_testing.go b/repository/repo_testing.go
index 53375a5b..cfa26631 100644
--- a/repository/repo_testing.go
+++ b/repository/repo_testing.go
@@ -53,160 +53,169 @@ func RepoTest(t *testing.T, creator RepoCreator, cleaner RepoCleaner) {
true: "Bare",
} {
t.Run(name, func(t *testing.T) {
- t.Run("Blob-Tree-Commit-Ref", func(t *testing.T) {
- repo := creator(bare)
- defer cleaner(repo)
-
- // Blob
-
- data := randomData()
-
- blobHash1, err := repo.StoreData(data)
- require.NoError(t, err)
- require.True(t, blobHash1.IsValid())
-
- blob1Read, err := repo.ReadData(blobHash1)
- require.NoError(t, err)
- require.Equal(t, data, blob1Read)
-
- // Tree
-
- blobHash2, err := repo.StoreData(randomData())
- require.NoError(t, err)
- blobHash3, err := repo.StoreData(randomData())
- require.NoError(t, err)
-
- tree1 := []TreeEntry{
- {
- ObjectType: Blob,
- Hash: blobHash1,
- Name: "blob1",
- },
- {
- ObjectType: Blob,
- Hash: blobHash2,
- Name: "blob2",
- },
- }
-
- treeHash1, err := repo.StoreTree(tree1)
- require.NoError(t, err)
- require.True(t, treeHash1.IsValid())
-
- tree1Read, err := repo.ReadTree(treeHash1)
- require.NoError(t, err)
- require.ElementsMatch(t, tree1, tree1Read)
-
- tree2 := []TreeEntry{
- {
- ObjectType: Tree,
- Hash: treeHash1,
- Name: "tree1",
- },
- {
- ObjectType: Blob,
- Hash: blobHash3,
- Name: "blob3",
- },
- }
-
- treeHash2, err := repo.StoreTree(tree2)
- require.NoError(t, err)
- require.True(t, treeHash2.IsValid())
-
- tree2Read, err := repo.ReadTree(treeHash2)
- require.NoError(t, err)
- require.ElementsMatch(t, tree2, tree2Read)
-
- // Commit
-
- commit1, err := repo.StoreCommit(treeHash1)
- require.NoError(t, err)
- require.True(t, commit1.IsValid())
-
- treeHash1Read, err := repo.GetTreeHash(commit1)
- require.NoError(t, err)
- require.Equal(t, treeHash1, treeHash1Read)
-
- commit2, err := repo.StoreCommitWithParent(treeHash2, commit1)
- require.NoError(t, err)
- require.True(t, commit2.IsValid())
-
- treeHash2Read, err := repo.GetTreeHash(commit2)
- require.NoError(t, err)
- require.Equal(t, treeHash2, treeHash2Read)
-
- // Ref
-
- exist1, err := repo.RefExist("refs/bugs/ref1")
- require.NoError(t, err)
- require.False(t, exist1)
-
- err = repo.UpdateRef("refs/bugs/ref1", commit2)
- require.NoError(t, err)
-
- exist1, err = repo.RefExist("refs/bugs/ref1")
- require.NoError(t, err)
- require.True(t, exist1)
-
- ls, err := repo.ListRefs("refs/bugs")
- require.NoError(t, err)
- require.ElementsMatch(t, []string{"refs/bugs/ref1"}, ls)
-
- err = repo.CopyRef("refs/bugs/ref1", "refs/bugs/ref2")
- require.NoError(t, err)
-
- ls, err = repo.ListRefs("refs/bugs")
- require.NoError(t, err)
- require.ElementsMatch(t, []string{"refs/bugs/ref1", "refs/bugs/ref2"}, ls)
-
- commits, err := repo.ListCommits("refs/bugs/ref2")
- require.NoError(t, err)
- require.ElementsMatch(t, []Hash{commit1, commit2}, commits)
-
- // Graph
-
- commit3, err := repo.StoreCommitWithParent(treeHash1, commit1)
- require.NoError(t, err)
-
- ancestorHash, err := repo.FindCommonAncestor(commit2, commit3)
- require.NoError(t, err)
- require.Equal(t, commit1, ancestorHash)
-
- err = repo.RemoveRef("refs/bugs/ref1")
- require.NoError(t, err)
- })
+ repo := creator(bare)
+ defer cleaner(repo)
- t.Run("Local config", func(t *testing.T) {
- repo := creator(bare)
- defer cleaner(repo)
+ t.Run("Data", func(t *testing.T) {
+ RepoDataTest(t, repo)
+ })
- testConfig(t, repo.LocalConfig())
+ t.Run("Config", func(t *testing.T) {
+ RepoConfigTest(t, repo)
})
t.Run("Clocks", func(t *testing.T) {
- repo := creator(bare)
- defer cleaner(repo)
-
- clock, err := repo.GetOrCreateClock("foo")
- require.NoError(t, err)
- require.Equal(t, lamport.Time(1), clock.Time())
+ RepoClockTest(t, repo)
+ })
+ })
+ }
+}
- time, err := clock.Increment()
- require.NoError(t, err)
- require.Equal(t, lamport.Time(1), time)
- require.Equal(t, lamport.Time(2), clock.Time())
+// helper to test a RepoConfig
+func RepoConfigTest(t *testing.T, repo RepoConfig) {
+ testConfig(t, repo.LocalConfig())
+}
- clock2, err := repo.GetOrCreateClock("foo")
- require.NoError(t, err)
- require.Equal(t, lamport.Time(2), clock2.Time())
+// helper to test a RepoData
+func RepoDataTest(t *testing.T, repo RepoData) {
+ // Blob
+
+ data := randomData()
+
+ blobHash1, err := repo.StoreData(data)
+ require.NoError(t, err)
+ require.True(t, blobHash1.IsValid())
+
+ blob1Read, err := repo.ReadData(blobHash1)
+ require.NoError(t, err)
+ require.Equal(t, data, blob1Read)
+
+ // Tree
+
+ blobHash2, err := repo.StoreData(randomData())
+ require.NoError(t, err)
+ blobHash3, err := repo.StoreData(randomData())
+ require.NoError(t, err)
+
+ tree1 := []TreeEntry{
+ {
+ ObjectType: Blob,
+ Hash: blobHash1,
+ Name: "blob1",
+ },
+ {
+ ObjectType: Blob,
+ Hash: blobHash2,
+ Name: "blob2",
+ },
+ }
- clock3, err := repo.GetOrCreateClock("bar")
- require.NoError(t, err)
- require.Equal(t, lamport.Time(1), clock3.Time())
- })
- })
+ treeHash1, err := repo.StoreTree(tree1)
+ require.NoError(t, err)
+ require.True(t, treeHash1.IsValid())
+
+ tree1Read, err := repo.ReadTree(treeHash1)
+ require.NoError(t, err)
+ require.ElementsMatch(t, tree1, tree1Read)
+
+ tree2 := []TreeEntry{
+ {
+ ObjectType: Tree,
+ Hash: treeHash1,
+ Name: "tree1",
+ },
+ {
+ ObjectType: Blob,
+ Hash: blobHash3,
+ Name: "blob3",
+ },
}
+
+ treeHash2, err := repo.StoreTree(tree2)
+ require.NoError(t, err)
+ require.True(t, treeHash2.IsValid())
+
+ tree2Read, err := repo.ReadTree(treeHash2)
+ require.NoError(t, err)
+ require.ElementsMatch(t, tree2, tree2Read)
+
+ // Commit
+
+ commit1, err := repo.StoreCommit(treeHash1)
+ require.NoError(t, err)
+ require.True(t, commit1.IsValid())
+
+ treeHash1Read, err := repo.GetTreeHash(commit1)
+ require.NoError(t, err)
+ require.Equal(t, treeHash1, treeHash1Read)
+
+ commit2, err := repo.StoreCommitWithParent(treeHash2, commit1)
+ require.NoError(t, err)
+ require.True(t, commit2.IsValid())
+
+ treeHash2Read, err := repo.GetTreeHash(commit2)
+ require.NoError(t, err)
+ require.Equal(t, treeHash2, treeHash2Read)
+
+ // Ref
+
+ exist1, err := repo.RefExist("refs/bugs/ref1")
+ require.NoError(t, err)
+ require.False(t, exist1)
+
+ err = repo.UpdateRef("refs/bugs/ref1", commit2)
+ require.NoError(t, err)
+
+ exist1, err = repo.RefExist("refs/bugs/ref1")
+ require.NoError(t, err)
+ require.True(t, exist1)
+
+ ls, err := repo.ListRefs("refs/bugs")
+ require.NoError(t, err)
+ require.ElementsMatch(t, []string{"refs/bugs/ref1"}, ls)
+
+ err = repo.CopyRef("refs/bugs/ref1", "refs/bugs/ref2")
+ require.NoError(t, err)
+
+ ls, err = repo.ListRefs("refs/bugs")
+ require.NoError(t, err)
+ require.ElementsMatch(t, []string{"refs/bugs/ref1", "refs/bugs/ref2"}, ls)
+
+ commits, err := repo.ListCommits("refs/bugs/ref2")
+ require.NoError(t, err)
+ require.ElementsMatch(t, []Hash{commit1, commit2}, commits)
+
+ // Graph
+
+ commit3, err := repo.StoreCommitWithParent(treeHash1, commit1)
+ require.NoError(t, err)
+
+ ancestorHash, err := repo.FindCommonAncestor(commit2, commit3)
+ require.NoError(t, err)
+ require.Equal(t, commit1, ancestorHash)
+
+ err = repo.RemoveRef("refs/bugs/ref1")
+ require.NoError(t, err)
+}
+
+// helper to test a RepoClock
+func RepoClockTest(t *testing.T, repo RepoClock) {
+ clock, err := repo.GetOrCreateClock("foo")
+ require.NoError(t, err)
+ require.Equal(t, lamport.Time(1), clock.Time())
+
+ time, err := clock.Increment()
+ require.NoError(t, err)
+ require.Equal(t, lamport.Time(1), time)
+ require.Equal(t, lamport.Time(2), clock.Time())
+
+ clock2, err := repo.GetOrCreateClock("foo")
+ require.NoError(t, err)
+ require.Equal(t, lamport.Time(2), clock2.Time())
+
+ clock3, err := repo.GetOrCreateClock("bar")
+ require.NoError(t, err)
+ require.Equal(t, lamport.Time(1), clock3.Time())
}
func randomData() []byte {