aboutsummaryrefslogtreecommitdiff
path: root/obj_test.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2025-11-16 00:00:00 +0000
committerGravatar Runxi Yu2025-11-16 00:00:00 +0000
commitbad0f9715556a470d0de2a22c7040181e3a033ba (patch)
tree21463072ce5bc85682a887ce0cae26d833941af3 /obj_test.go
parentEntryRecursive should return ErrNotFound instead of nil, nil (diff)
signature
Use actual git for tests and enhance Head
Diffstat (limited to 'obj_test.go')
-rw-r--r--obj_test.go52
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")
+ }
+}