aboutsummaryrefslogtreecommitdiff
path: root/objectstore/loose/read_test.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-22 17:27:37 +0000
committerGravatar Runxi Yu2026-03-22 17:27:37 +0000
commit8f577284f47f699855dcb3ceda21aa9d8be77c2f (patch)
tree36f8d47a1584bd80e9e114d5c68ad5ec6c333b88 /objectstore/loose/read_test.go
parentinternal/testgit: why not make it more annoying to use ambient authority (diff)
signatureNo signature
objectstore{,/loose}: Document contracts more clearly
Diffstat (limited to 'objectstore/loose/read_test.go')
-rw-r--r--objectstore/loose/read_test.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/objectstore/loose/read_test.go b/objectstore/loose/read_test.go
index 44e25910..7ecc1b10 100644
--- a/objectstore/loose/read_test.go
+++ b/objectstore/loose/read_test.go
@@ -11,6 +11,7 @@ import (
"codeberg.org/lindenii/furgit/objectid"
"codeberg.org/lindenii/furgit/objectstore"
"codeberg.org/lindenii/furgit/objectstore/loose"
+ "codeberg.org/lindenii/furgit/objecttype"
)
func TestLooseStoreReadAgainstGit(t *testing.T) {
@@ -174,3 +175,37 @@ func TestLooseStoreNewValidation(t *testing.T) {
t.Fatalf("loose.New(root, unknown) expected error")
}
}
+
+func TestLooseStoreReadHeaderDoesNotVerifyAdler32(t *testing.T) {
+ t.Parallel()
+ testgit.ForEachAlgorithm(t, func(t *testing.T, algo objectid.Algorithm) { //nolint:thelper
+ testRepo := testgit.NewRepo(t, testgit.RepoOptions{ObjectFormat: algo, Bare: true})
+ store := openLooseStore(t, testRepo, algo)
+
+ content := []byte("header-only-check\n")
+ id, err := store.WriteBytesContent(objecttype.TypeBlob, content)
+ if err != nil {
+ t.Fatalf("WriteBytesContent: %v", err)
+ }
+
+ corruptLooseObjectTrailer(t, testRepo, id)
+
+ ty, size, err := store.ReadHeader(id)
+ if err != nil {
+ t.Fatalf("ReadHeader: %v", err)
+ }
+
+ if ty != objecttype.TypeBlob {
+ t.Fatalf("ReadHeader type = %v, want %v", ty, objecttype.TypeBlob)
+ }
+
+ if size != int64(len(content)) {
+ t.Fatalf("ReadHeader size = %d, want %d", size, len(content))
+ }
+
+ _, err = store.ReadBytesFull(id)
+ if err == nil {
+ t.Fatalf("ReadBytesFull on corrupted trailer succeeded")
+ }
+ })
+}