aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/batch_test.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-23 03:25:44 +0000
committerGravatar Runxi Yu2026-03-23 03:27:52 +0000
commit4a796e64ac576d6a3e3f2fe6174c4aa476ea0c5c (patch)
tree44d72a20076ceab0981d0b553693d26ca36cc0be /refstore/files/batch_test.go
parentreceivepack: Lifecycle/ownership docs (diff)
signatureNo signature
refstore: Improve interfaces, errors, and make batch work v0.1.92
Diffstat (limited to 'refstore/files/batch_test.go')
-rw-r--r--refstore/files/batch_test.go33
1 files changed, 24 insertions, 9 deletions
diff --git a/refstore/files/batch_test.go b/refstore/files/batch_test.go
index 9a507919..d9ce9ac9 100644
--- a/refstore/files/batch_test.go
+++ b/refstore/files/batch_test.go
@@ -1,10 +1,12 @@
package files_test
import (
+ "errors"
"testing"
"codeberg.org/lindenii/furgit/internal/testgit"
"codeberg.org/lindenii/furgit/objectid"
+ "codeberg.org/lindenii/furgit/refstore"
)
func TestBatchApplyRejectsStaleDeleteAndAppliesIndependentDelete(t *testing.T) {
@@ -39,12 +41,17 @@ func TestBatchApplyRejectsStaleDeleteAndAppliesIndependentDelete(t *testing.T) {
t.Fatalf("len(results) = %d, want 2", len(results))
}
- if results[0].Error == nil {
- t.Fatal("stale delete unexpectedly succeeded")
+ if results[0].Status != refstore.BatchStatusRejected {
+ t.Fatalf("results[0].Status = %v, want rejected", results[0].Status)
}
- if results[1].Error != nil {
- t.Fatalf("valid delete failed: %v", results[1].Error)
+ if !errors.Is(results[0].Error, refstore.ErrReferenceNotFound) &&
+ errors.As(results[0].Error, new(*refstore.IncorrectOldValueError)) == false {
+ t.Fatalf("results[0].Error = %v, want stale-value rejection", results[0].Error)
+ }
+
+ if results[1].Status != refstore.BatchStatusApplied {
+ t.Fatalf("results[1].Status = %v, want applied", results[1].Status)
}
_, err = store.Resolve("refs/heads/main")
@@ -81,20 +88,28 @@ func TestBatchApplyRejectsDuplicateQueuedRef(t *testing.T) {
batch.Verify("refs/heads/main", commitID)
results, err := batch.Apply()
- if err == nil {
- t.Fatal("Apply unexpectedly succeeded")
+ if err != nil {
+ t.Fatalf("Apply: %v", err)
}
if len(results) != 2 {
t.Fatalf("len(results) = %d, want 2", len(results))
}
- if results[1].Error == nil {
- t.Fatal("duplicate ref operation did not report an error")
+ if results[0].Status != refstore.BatchStatusApplied {
+ t.Fatalf("results[0].Status = %v, want applied", results[0].Status)
+ }
+
+ if results[1].Status != refstore.BatchStatusRejected {
+ t.Fatalf("results[1].Status = %v, want rejected", results[1].Status)
+ }
+
+ if !errors.As(results[1].Error, new(*refstore.DuplicateUpdateError)) {
+ t.Fatalf("results[1].Error = %v, want duplicate update error", results[1].Error)
}
_, err = store.Resolve("refs/heads/main")
- if err != nil {
+ if !errors.Is(err, refstore.ErrReferenceNotFound) {
t.Fatalf("Resolve(main): %v", err)
}
})