aboutsummaryrefslogtreecommitdiff
path: root/refstore
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-06 21:19:56 +0800
committerGravatar Runxi Yu2026-03-07 00:34:30 +0800
commit01d15bccf3b1dcc51516b1f64d50950b31d7f8fb (patch)
treee491fcc762c67c1ef4ce54faafc5dafdb734ae8a /refstore
parentobjectstored/refstore: Weird ireturn behavior (diff)
signatureNo signature
Urgh I made some wrong amends and I'm too tired to separate the commits out this time
ancestor: Split out of reachability mergebase: Add merge base routines internal/commitquery: Add commit query context engine thingy internal/peel: Shared tag peeling errors: Shared object query errors internal/testgit: Add rooted repo helpers; remove raw path access objectstore/memory: Add in-memory object store objectid: Add Compare helper
Diffstat (limited to 'refstore')
-rw-r--r--refstore/loose/loose_test.go37
-rw-r--r--refstore/packed/packed_test.go25
2 files changed, 20 insertions, 42 deletions
diff --git a/refstore/loose/loose_test.go b/refstore/loose/loose_test.go
index 7b295bbb..912d7c9e 100644
--- a/refstore/loose/loose_test.go
+++ b/refstore/loose/loose_test.go
@@ -2,8 +2,6 @@ package loose_test
import (
"errors"
- "os"
- "path/filepath"
"slices"
"testing"
@@ -14,15 +12,10 @@ import (
"codeberg.org/lindenii/furgit/refstore/loose"
)
-func openLooseStore(t *testing.T, repoPath string, algo objectid.Algorithm) *loose.Store {
+func openLooseStore(t *testing.T, testRepo *testgit.TestRepo, algo objectid.Algorithm) *loose.Store {
t.Helper()
- root, err := os.OpenRoot(repoPath)
- if err != nil {
- t.Fatalf("OpenRoot(%q): %v", repoPath, err)
- }
-
- t.Cleanup(func() { _ = root.Close() })
+ root := testRepo.OpenGitRoot(t)
store, err := loose.New(root, algo)
if err != nil {
@@ -40,7 +33,7 @@ func TestLooseResolveAndResolveFully(t *testing.T) {
testRepo.UpdateRef(t, "refs/heads/main", commitID)
testRepo.SymbolicRef(t, "HEAD", "refs/heads/main")
- store := openLooseStore(t, testRepo.Dir(), algo)
+ store := openLooseStore(t, testRepo, algo)
resolvedHead, err := store.Resolve("HEAD")
if err != nil {
@@ -93,7 +86,7 @@ func TestLooseResolveFullyCycle(t *testing.T) {
testRepo.SymbolicRef(t, "refs/heads/a", "refs/heads/b")
testRepo.SymbolicRef(t, "refs/heads/b", "refs/heads/a")
- store := openLooseStore(t, testRepo.Dir(), algo)
+ store := openLooseStore(t, testRepo, algo)
_, err := store.ResolveFully("refs/heads/a")
if err == nil {
@@ -112,7 +105,7 @@ func TestLooseListPattern(t *testing.T) {
testRepo.UpdateRef(t, "refs/tags/v1.0.0", commitID)
testRepo.SymbolicRef(t, "HEAD", "refs/heads/main")
- store := openLooseStore(t, testRepo.Dir(), algo)
+ store := openLooseStore(t, testRepo, algo)
allRefs, err := store.List("")
if err != nil {
@@ -161,7 +154,7 @@ func TestLooseListPatternMatrix(t *testing.T) {
testRepo.UpdateRef(t, "refs/tags/v1", commitID)
testRepo.SymbolicRef(t, "HEAD", "refs/heads/main")
- store := openLooseStore(t, testRepo.Dir(), algo)
+ store := openLooseStore(t, testRepo, algo)
tests := []struct {
pattern string
@@ -223,21 +216,11 @@ func TestLooseMalformedDetachedRef(t *testing.T) {
testgit.ForEachAlgorithm(t, func(t *testing.T, algo objectid.Algorithm) { //nolint:thelper
testRepo := testgit.NewRepo(t, testgit.RepoOptions{ObjectFormat: algo, Bare: true})
- refPath := filepath.Join(testRepo.Dir(), "refs", "heads", "bad")
-
- err := os.MkdirAll(filepath.Dir(refPath), 0o755)
- if err != nil {
- t.Fatalf("MkdirAll: %v", err)
- }
-
- err = os.WriteFile(refPath, []byte("not-a-hash\n"), 0o644)
- if err != nil {
- t.Fatalf("WriteFile: %v", err)
- }
+ testRepo.WriteFileAll(t, "refs/heads/bad", []byte("not-a-hash\n"), 0o755, 0o644)
- store := openLooseStore(t, testRepo.Dir(), algo)
+ store := openLooseStore(t, testRepo, algo)
- _, err = store.Resolve("refs/heads/bad")
+ _, err := store.Resolve("refs/heads/bad")
if err == nil {
t.Fatalf("Resolve(malformed) expected error")
}
@@ -253,7 +236,7 @@ func TestLooseShorten(t *testing.T) {
testRepo.UpdateRef(t, "refs/tags/main", commitID)
testRepo.UpdateRef(t, "refs/remotes/origin/main", commitID)
- store := openLooseStore(t, testRepo.Dir(), algo)
+ store := openLooseStore(t, testRepo, algo)
shortHead, err := store.Shorten("refs/heads/main")
if err != nil {
diff --git a/refstore/packed/packed_test.go b/refstore/packed/packed_test.go
index 9d6b2fe1..e5a56dda 100644
--- a/refstore/packed/packed_test.go
+++ b/refstore/packed/packed_test.go
@@ -14,15 +14,10 @@ import (
"codeberg.org/lindenii/furgit/refstore/packed"
)
-func openPackedRefStoreFromRepo(t *testing.T, repoPath string, algo objectid.Algorithm) *packed.Store {
+func openPackedRefStoreFromRepo(t *testing.T, testRepo *testgit.TestRepo, algo objectid.Algorithm) *packed.Store {
t.Helper()
- root, err := os.OpenRoot(repoPath)
- if err != nil {
- t.Fatalf("OpenRoot(repo): %v", err)
- }
-
- defer func() { _ = root.Close() }()
+ root := testRepo.OpenGitRoot(t)
store, err := packed.New(root, algo)
if err != nil {
@@ -37,11 +32,6 @@ func openPackedRefStoreFromContent(t *testing.T, content string, algo objectid.A
dir := t.TempDir()
- err := os.WriteFile(dir+"/packed-refs", []byte(content), 0o644)
- if err != nil {
- t.Fatalf("WriteFile(packed-refs): %v", err)
- }
-
root, err := os.OpenRoot(dir)
if err != nil {
t.Fatalf("OpenRoot(temp): %v", err)
@@ -49,6 +39,11 @@ func openPackedRefStoreFromContent(t *testing.T, content string, algo objectid.A
defer func() { _ = root.Close() }()
+ err = root.WriteFile("packed-refs", []byte(content), 0o644)
+ if err != nil {
+ t.Fatalf("WriteFile(packed-refs): %v", err)
+ }
+
return packed.New(root, algo)
}
@@ -61,7 +56,7 @@ func TestPackedResolveAndPeeled(t *testing.T) {
tagID := testRepo.TagAnnotated(t, "v1.0.0", commitID, "annotated tag")
testRepo.PackRefs(t, "--all", "--prune")
- store := openPackedRefStoreFromRepo(t, testRepo.Dir(), algo)
+ store := openPackedRefStoreFromRepo(t, testRepo, algo)
resolvedMain, err := store.Resolve("refs/heads/main")
if err != nil {
@@ -125,7 +120,7 @@ func TestPackedListAndShorten(t *testing.T) {
testRepo.UpdateRef(t, "refs/remotes/origin/main", commitID)
testRepo.PackRefs(t, "--all", "--prune")
- store := openPackedRefStoreFromRepo(t, testRepo.Dir(), algo)
+ store := openPackedRefStoreFromRepo(t, testRepo, algo)
all, err := store.List("")
if err != nil {
@@ -180,7 +175,7 @@ func TestPackedListPatternMatrix(t *testing.T) {
testRepo.UpdateRef(t, "refs/tags/v1", commitID)
testRepo.PackRefs(t, "--all", "--prune")
- store := openPackedRefStoreFromRepo(t, testRepo.Dir(), algo)
+ store := openPackedRefStoreFromRepo(t, testRepo, algo)
tests := []struct {
pattern string