diff options
| author | 2026-02-20 22:30:57 +0800 | |
|---|---|---|
| committer | 2026-02-20 22:30:57 +0800 | |
| commit | bb5b5334c74026c0a46f48cf2418038e0d909e9b (patch) | |
| tree | a5520e55b904a1f973898858e2278f0be294a34b | |
| parent | object: Use objectheader (diff) | |
| signature | No signature | |
object: Remove the old opaque errors
| -rw-r--r-- | object/blob_serialize.go | 4 | ||||
| -rw-r--r-- | object/commit_parse.go | 4 | ||||
| -rw-r--r-- | object/commit_serialize.go | 7 | ||||
| -rw-r--r-- | object/object.go | 13 | ||||
| -rw-r--r-- | object/tag_parse.go | 2 | ||||
| -rw-r--r-- | object/tag_serialize.go | 5 | ||||
| -rw-r--r-- | object/tree.go | 9 | ||||
| -rw-r--r-- | object/tree_parse.go | 2 | ||||
| -rw-r--r-- | object/tree_serialize.go | 3 | ||||
| -rw-r--r-- | object/tree_serialize_test.go | 5 |
10 files changed, 24 insertions, 30 deletions
diff --git a/object/blob_serialize.go b/object/blob_serialize.go index d14ae56c..0d4c1e54 100644 --- a/object/blob_serialize.go +++ b/object/blob_serialize.go @@ -1,6 +1,8 @@ package object import ( + "errors" + "codeberg.org/lindenii/furgit/internal/objectheader" "codeberg.org/lindenii/furgit/objecttype" ) @@ -18,7 +20,7 @@ func (blob *Blob) SerializeWithHeader() ([]byte, error) { } header, ok := objectheader.Encode(objecttype.TypeBlob, int64(len(body))) if !ok { - return nil, ErrInvalidObject + return nil, errors.New("object: blob: failed to encode object header") } raw := make([]byte, len(header)+len(body)) copy(raw, header) diff --git a/object/commit_parse.go b/object/commit_parse.go index acc90951..31def350 100644 --- a/object/commit_parse.go +++ b/object/commit_parse.go @@ -11,7 +11,7 @@ import ( // ParseCommit decodes a commit object body. func ParseCommit(body []byte, algo oid.Algorithm) (*Commit, error) { if algo.Size() == 0 { - return nil, ErrInvalidObject + return nil, fmt.Errorf("object: commit: invalid hash algorithm %q", algo) } c := new(Commit) @@ -79,7 +79,7 @@ func ParseCommit(body []byte, algo oid.Algorithm) (*Commit, error) { } if i > len(body) { - return nil, ErrInvalidObject + return nil, errors.New("object: commit: parser position out of bounds") } c.Message = append([]byte(nil), body[i:]...) return c, nil diff --git a/object/commit_serialize.go b/object/commit_serialize.go index b7c058a3..c34c44a3 100644 --- a/object/commit_serialize.go +++ b/object/commit_serialize.go @@ -2,6 +2,7 @@ package object import ( "bytes" + "errors" "fmt" "codeberg.org/lindenii/furgit/internal/objectheader" @@ -13,7 +14,7 @@ func (commit *Commit) SerializeWithoutHeader() ([]byte, error) { var buf bytes.Buffer if commit.Tree.Size() == 0 { - return nil, ErrInvalidObject + return nil, errors.New("object: commit: missing tree id") } fmt.Fprintf(&buf, "tree %s\n", commit.Tree.String()) for _, parent := range commit.Parents { @@ -43,7 +44,7 @@ func (commit *Commit) SerializeWithoutHeader() ([]byte, error) { } for _, h := range commit.ExtraHeaders { if h.Key == "" { - return nil, ErrInvalidObject + return nil, errors.New("object: commit: extra header has empty key") } buf.WriteString(h.Key) buf.WriteByte(' ') @@ -64,7 +65,7 @@ func (commit *Commit) SerializeWithHeader() ([]byte, error) { } header, ok := objectheader.Encode(objecttype.TypeCommit, int64(len(body))) if !ok { - return nil, ErrInvalidObject + return nil, errors.New("object: commit: failed to encode object header") } raw := make([]byte, len(header)+len(body)) copy(raw, header) diff --git a/object/object.go b/object/object.go index 53fb0a58..b91fd324 100644 --- a/object/object.go +++ b/object/object.go @@ -1,18 +1,7 @@ // Package object provides Git object models and codecs. package object -import ( - "errors" - - "codeberg.org/lindenii/furgit/objecttype" -) - -var ( - // ErrInvalidObject indicates malformed serialized data. - ErrInvalidObject = errors.New("object: invalid object encoding") - // ErrNotFound indicates missing entries in in-memory lookups. - ErrNotFound = errors.New("object: not found") -) +import "codeberg.org/lindenii/furgit/objecttype" // Object is a Git object that can serialize itself. type Object interface { diff --git a/object/tag_parse.go b/object/tag_parse.go index b9b3cac8..84256166 100644 --- a/object/tag_parse.go +++ b/object/tag_parse.go @@ -12,7 +12,7 @@ import ( // ParseTag decodes a tag object body. func ParseTag(body []byte, algo oid.Algorithm) (*Tag, error) { if algo.Size() == 0 { - return nil, ErrInvalidObject + return nil, fmt.Errorf("object: tag: invalid hash algorithm %q", algo) } t := new(Tag) diff --git a/object/tag_serialize.go b/object/tag_serialize.go index f9d754cf..0fa632df 100644 --- a/object/tag_serialize.go +++ b/object/tag_serialize.go @@ -2,6 +2,7 @@ package object import ( "bytes" + "errors" "fmt" "codeberg.org/lindenii/furgit/internal/objectheader" @@ -11,7 +12,7 @@ import ( // SerializeWithoutHeader renders the raw tag body bytes. func (tag *Tag) SerializeWithoutHeader() ([]byte, error) { if tag.Target.Size() == 0 { - return nil, ErrInvalidObject + return nil, errors.New("object: tag: missing target id") } var buf bytes.Buffer @@ -52,7 +53,7 @@ func (tag *Tag) SerializeWithHeader() ([]byte, error) { } header, ok := objectheader.Encode(objecttype.TypeTag, int64(len(body))) if !ok { - return nil, ErrInvalidObject + return nil, errors.New("object: tag: failed to encode object header") } raw := make([]byte, len(header)+len(body)) copy(raw, header) diff --git a/object/tree.go b/object/tree.go index 9ccea4a2..b655be03 100644 --- a/object/tree.go +++ b/object/tree.go @@ -2,6 +2,7 @@ package object import ( "bytes" + "errors" "fmt" "sort" @@ -73,7 +74,7 @@ func (tree *Tree) entry(name []byte, searchIsTree bool) *TreeEntry { // InsertEntry inserts a tree entry while preserving Git ordering. func (tree *Tree) InsertEntry(newEntry TreeEntry) error { if tree == nil { - return ErrInvalidObject + return errors.New("object: tree: insert on nil tree") } if tree.entry(newEntry.Name, true) != nil || tree.entry(newEntry.Name, false) != nil { return fmt.Errorf("object: tree: entry %q already exists", newEntry.Name) @@ -91,10 +92,10 @@ func (tree *Tree) InsertEntry(newEntry TreeEntry) error { // RemoveEntry removes a tree entry by name. func (tree *Tree) RemoveEntry(name []byte) error { if tree == nil { - return ErrInvalidObject + return errors.New("object: tree: remove on nil tree") } if len(tree.Entries) == 0 { - return ErrNotFound + return fmt.Errorf("object: tree: entry %q not found", name) } for i := range tree.Entries { if bytes.Equal(tree.Entries[i].Name, name) { @@ -103,7 +104,7 @@ func (tree *Tree) RemoveEntry(name []byte) error { return nil } } - return ErrNotFound + return fmt.Errorf("object: tree: entry %q not found", name) } // TreeEntryNameCompare compares names using Git tree ordering rules. diff --git a/object/tree_parse.go b/object/tree_parse.go index e1e560b6..ee475803 100644 --- a/object/tree_parse.go +++ b/object/tree_parse.go @@ -11,7 +11,7 @@ import ( // ParseTree decodes a tree object body. func ParseTree(body []byte, algo oid.Algorithm) (*Tree, error) { if algo.Size() == 0 { - return nil, ErrInvalidObject + return nil, fmt.Errorf("object: tree: invalid hash algorithm %q", algo) } var entries []TreeEntry diff --git a/object/tree_serialize.go b/object/tree_serialize.go index 2ef0ebbb..254b13e3 100644 --- a/object/tree_serialize.go +++ b/object/tree_serialize.go @@ -1,6 +1,7 @@ package object import ( + "errors" "strconv" "codeberg.org/lindenii/furgit/internal/objectheader" @@ -40,7 +41,7 @@ func (tree *Tree) SerializeWithHeader() ([]byte, error) { } header, ok := objectheader.Encode(objecttype.TypeTree, int64(len(body))) if !ok { - return nil, ErrInvalidObject + return nil, errors.New("object: tree: failed to encode object header") } raw := make([]byte, len(header)+len(body)) copy(raw, header) diff --git a/object/tree_serialize_test.go b/object/tree_serialize_test.go index c04c1d92..59d09ea1 100644 --- a/object/tree_serialize_test.go +++ b/object/tree_serialize_test.go @@ -1,7 +1,6 @@ package object_test import ( - "errors" "testing" "codeberg.org/lindenii/furgit/internal/testgit" @@ -36,8 +35,8 @@ func TestTreeSerialize(t *testing.T) { if tree.Entry(removed.Name) != nil { t.Fatalf("Entry(%q) should be nil after remove", removed.Name) } - if err := tree.RemoveEntry([]byte("no-such-entry")); !errors.Is(err, object.ErrNotFound) { - t.Fatalf("RemoveEntry missing err = %v, want ErrNotFound", err) + if err := tree.RemoveEntry([]byte("no-such-entry")); err == nil { + t.Fatalf("RemoveEntry missing entry should fail") } if err := tree.InsertEntry(removed); err != nil { t.Fatalf("re-InsertEntry(%q): %v", removed.Name, err) |
