aboutsummaryrefslogtreecommitdiff
path: root/repo_test.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2025-11-16 00:00:00 +0000
committerGravatar Runxi Yu2025-11-16 00:00:00 +0000
commit28a599b2b90fd6c657f0eda2387a77a34f31c2c3 (patch)
treed08a7816c6d1cb92dab174e58eaf23b95d600ab6 /repo_test.go
parentMake the API more consistent (diff)
Add basic support for parsing configuration files
Now support for switching hash algorithms should be complete!
Diffstat (limited to 'repo_test.go')
-rw-r--r--repo_test.go47
1 files changed, 40 insertions, 7 deletions
diff --git a/repo_test.go b/repo_test.go
index 409919cf..43cc9919 100644
--- a/repo_test.go
+++ b/repo_test.go
@@ -2,6 +2,8 @@ package furgit
import (
"bytes"
+ "crypto/sha1"
+ "crypto/sha256"
"encoding/binary"
"errors"
"fmt"
@@ -23,7 +25,8 @@ func writeLooseBlob(t *testing.T, repo *Repository, data []byte) Hash {
func TestOpenRepositoryAndLooseRead(t *testing.T) {
root := t.TempDir()
- repo, err := OpenRepository(root, testHashSize)
+ setupRepoConfig(t, root)
+ repo, err := OpenRepository(root)
if err != nil {
t.Fatalf("OpenRepository error: %v", err)
}
@@ -45,7 +48,8 @@ func TestOpenRepositoryAndLooseRead(t *testing.T) {
func TestResolveRefLooseAndPacked(t *testing.T) {
root := t.TempDir()
- repo, err := OpenRepository(root, testHashSize)
+ setupRepoConfig(t, root)
+ repo, err := OpenRepository(root)
if err != nil {
t.Fatalf("OpenRepository error: %v", err)
}
@@ -85,7 +89,8 @@ func TestResolveRefLooseAndPacked(t *testing.T) {
func TestResolveHEAD(t *testing.T) {
root := t.TempDir()
- repo, err := OpenRepository(root, testHashSize)
+ setupRepoConfig(t, root)
+ repo, err := OpenRepository(root)
if err != nil {
t.Fatalf("OpenRepository error: %v", err)
}
@@ -110,7 +115,8 @@ func TestResolveHEAD(t *testing.T) {
func TestReadObjectTypeSizeLoose(t *testing.T) {
t.Parallel()
root := t.TempDir()
- repo, err := OpenRepository(root, testHashSize)
+ setupRepoConfig(t, root)
+ repo, err := OpenRepository(root)
if err != nil {
t.Fatalf("OpenRepository error: %v", err)
}
@@ -130,6 +136,7 @@ func TestReadObjectTypeSizeLoose(t *testing.T) {
func TestReadObjectTypeSizePackedObjects(t *testing.T) {
t.Parallel()
root := t.TempDir()
+ setupRepoConfig(t, root)
objs := []testPackObject{
{finalType: ObjBlob, body: []byte("packed base payload")},
@@ -142,7 +149,7 @@ func TestReadObjectTypeSizePackedObjects(t *testing.T) {
}
ids := writeTestPack(t, root, "pack-basic", objs)
- repo, err := OpenRepository(root, testHashSize)
+ repo, err := OpenRepository(root)
if err != nil {
t.Fatalf("OpenRepository error: %v", err)
}
@@ -168,8 +175,9 @@ func TestReadObjectTypeSizePackedObjects(t *testing.T) {
func TestReadObjectTypeSizePackRefDeltaLooseBase(t *testing.T) {
t.Parallel()
root := t.TempDir()
+ setupRepoConfig(t, root)
- repo, err := OpenRepository(root, testHashSize)
+ repo, err := OpenRepository(root)
if err != nil {
t.Fatalf("OpenRepository error: %v", err)
}
@@ -200,7 +208,8 @@ func TestReadObjectTypeSizePackRefDeltaLooseBase(t *testing.T) {
func TestWriteLooseObjectAllTypes(t *testing.T) {
root := t.TempDir()
- repo, err := OpenRepository(root, testHashSize)
+ setupRepoConfig(t, root)
+ repo, err := OpenRepository(root)
if err != nil {
t.Fatalf("OpenRepository error: %v", err)
}
@@ -504,3 +513,27 @@ func encodeOfsDistance(dist uint64) []byte {
}
return out
}
+
+func setupRepoConfig(t *testing.T, root string) {
+ var algo string
+ switch testHashSize {
+ case sha1.Size:
+ algo = "sha1"
+ case sha256.Size:
+ algo = "sha256"
+ default:
+ t.Fatalf("unsupported testHashSize: %d", testHashSize)
+ }
+
+ cfg := fmt.Sprintf(`
+[core]
+ repositoryformatversion = 0
+[extensions]
+ objectformat = %s
+`, algo)
+
+ err := os.WriteFile(filepath.Join(root, "config"), []byte(cfg), 0o644)
+ if err != nil {
+ t.Fatalf("write config: %v", err)
+ }
+}