diff options
| author | 2026-03-22 17:27:37 +0000 | |
|---|---|---|
| committer | 2026-03-22 17:27:37 +0000 | |
| commit | 8f577284f47f699855dcb3ceda21aa9d8be77c2f (patch) | |
| tree | 36f8d47a1584bd80e9e114d5c68ad5ec6c333b88 /objectstore/loose/read_test.go | |
| parent | internal/testgit: why not make it more annoying to use ambient authority (diff) | |
| signature | No signature | |
objectstore{,/loose}: Document contracts more clearly
Diffstat (limited to 'objectstore/loose/read_test.go')
| -rw-r--r-- | objectstore/loose/read_test.go | 35 |
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") + } + }) +} |
