diff options
| author | 2026-02-21 04:55:47 +0800 | |
|---|---|---|
| committer | 2026-02-21 04:55:47 +0800 | |
| commit | bf504c5af1559dc2f4149a7e9359374345683724 (patch) | |
| tree | c7ae3bf45aa652c2df6c09badf98c27daa293916 | |
| parent | objectstore/loose: Add streaming writer (diff) | |
| signature | No signature | |
objectstore/loose: Move test helpers to their own file
| -rw-r--r-- | objectstore/loose/helpers_test.go | 63 | ||||
| -rw-r--r-- | objectstore/loose/read_test.go | 53 |
2 files changed, 63 insertions, 53 deletions
diff --git a/objectstore/loose/helpers_test.go b/objectstore/loose/helpers_test.go new file mode 100644 index 00000000..972059e0 --- /dev/null +++ b/objectstore/loose/helpers_test.go @@ -0,0 +1,63 @@ +package loose_test + +import ( + "io" + "os" + "path/filepath" + "testing" + + "codeberg.org/lindenii/furgit/internal/testgit" + "codeberg.org/lindenii/furgit/objectheader" + "codeberg.org/lindenii/furgit/objectid" + "codeberg.org/lindenii/furgit/objectstore/loose" + "codeberg.org/lindenii/furgit/objecttype" +) + +func openLooseStore(t *testing.T, repoPath string, algo objectid.Algorithm) *loose.Store { + t.Helper() + objectsPath := filepath.Join(repoPath, "objects") + root, err := os.OpenRoot(objectsPath) + if err != nil { + t.Fatalf("OpenRoot(%q): %v", objectsPath, err) + } + t.Cleanup(func() { _ = root.Close() }) + + store, err := loose.New(root, algo) + if err != nil { + t.Fatalf("loose.New: %v", err) + } + return store +} + +func mustReadAllAndClose(t *testing.T, reader io.ReadCloser) []byte { + t.Helper() + data, err := io.ReadAll(reader) + if err != nil { + _ = reader.Close() + t.Fatalf("ReadAll: %v", err) + } + if err := reader.Close(); err != nil { + t.Fatalf("Close: %v", err) + } + return data +} + +func expectedRawObject(t *testing.T, testRepo *testgit.TestRepo, id objectid.ObjectID) (objecttype.Type, []byte, []byte) { + t.Helper() + + typeName := testRepo.Run(t, "cat-file", "-t", id.String()) + ty, ok := objecttype.ParseName(typeName) + if !ok { + t.Fatalf("ParseName(%q) failed", typeName) + } + body := testRepo.CatFile(t, typeName, id) + header, ok := objectheader.Encode(ty, int64(len(body))) + if !ok { + t.Fatalf("objectheader.Encode failed") + } + + raw := make([]byte, len(header)+len(body)) + copy(raw, header) + copy(raw[len(header):], body) + return ty, body, raw +} diff --git a/objectstore/loose/read_test.go b/objectstore/loose/read_test.go index 9265aca2..8663ef1f 100644 --- a/objectstore/loose/read_test.go +++ b/objectstore/loose/read_test.go @@ -3,69 +3,16 @@ package loose_test import ( "bytes" "errors" - "io" "os" - "path/filepath" "strings" "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectheader" "codeberg.org/lindenii/furgit/objectid" "codeberg.org/lindenii/furgit/objectstore" "codeberg.org/lindenii/furgit/objectstore/loose" - "codeberg.org/lindenii/furgit/objecttype" ) -func openLooseStore(t *testing.T, repoPath string, algo objectid.Algorithm) *loose.Store { - t.Helper() - objectsPath := filepath.Join(repoPath, "objects") - root, err := os.OpenRoot(objectsPath) - if err != nil { - t.Fatalf("OpenRoot(%q): %v", objectsPath, err) - } - t.Cleanup(func() { _ = root.Close() }) - - store, err := loose.New(root, algo) - if err != nil { - t.Fatalf("loose.New: %v", err) - } - return store -} - -func mustReadAllAndClose(t *testing.T, reader io.ReadCloser) []byte { - t.Helper() - data, err := io.ReadAll(reader) - if err != nil { - _ = reader.Close() - t.Fatalf("ReadAll: %v", err) - } - if err := reader.Close(); err != nil { - t.Fatalf("Close: %v", err) - } - return data -} - -func expectedRawObject(t *testing.T, testRepo *testgit.TestRepo, id objectid.ObjectID) (objecttype.Type, []byte, []byte) { - t.Helper() - - typeName := testRepo.Run(t, "cat-file", "-t", id.String()) - ty, ok := objecttype.ParseName(typeName) - if !ok { - t.Fatalf("ParseName(%q) failed", typeName) - } - body := testRepo.CatFile(t, typeName, id) - header, ok := objectheader.Encode(ty, int64(len(body))) - if !ok { - t.Fatalf("objectheader.Encode failed") - } - - raw := make([]byte, len(header)+len(body)) - copy(raw, header) - copy(raw[len(header):], body) - return ty, body, raw -} - func TestLooseStoreReadAgainstGit(t *testing.T) { testgit.ForEachAlgorithm(t, func(t *testing.T, algo objectid.Algorithm) { testRepo := testgit.NewBareRepo(t, algo) |
