diff options
Diffstat (limited to 'obj_test.go')
| -rw-r--r-- | obj_test.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/obj_test.go b/obj_test.go new file mode 100644 index 00000000..124127a5 --- /dev/null +++ b/obj_test.go @@ -0,0 +1,52 @@ +package furgit + +import ( + "fmt" + "testing" +) + +func TestObjectTypeSize(t *testing.T) { + repoPath, cleanup := setupTestRepo(t) + defer cleanup() + + testData := []byte("Test data for size check") + gitHash := gitHashObject(t, repoPath, "blob", testData) + + repo, err := OpenRepository(repoPath) + if err != nil { + t.Fatalf("OpenRepository failed: %v", err) + } + defer func() { _ = repo.Close() }() + + hash, _ := repo.ParseHash(gitHash) + ty, size, err := repo.ReadObjectTypeSize(hash) + if err != nil { + t.Fatalf("ReadObjectTypeSize failed: %v", err) + } + + if ty != ObjectTypeBlob { + t.Errorf("type: got %d, want %d", ty, ObjectTypeBlob) + } + + gitSize := string(gitCatFile(t, repoPath, "-s", gitHash)) + if size != int64(len(testData)) || gitSize != fmt.Sprintf("%d", size) { + t.Errorf("size mismatch: furgit=%d git=%s expected=%d", size, gitSize, len(testData)) + } +} + +func TestReadObjectInvalid(t *testing.T) { + repoPath, cleanup := setupTestRepo(t) + defer cleanup() + + repo, err := OpenRepository(repoPath) + if err != nil { + t.Fatalf("OpenRepository failed: %v", err) + } + defer func() { _ = repo.Close() }() + + invalidHash, _ := repo.ParseHash("0000000000000000000000000000000000000000000000000000000000000000") + _, err = repo.ReadObject(invalidHash) + if err == nil { + t.Error("expected error for invalid object") + } +} |
