diff options
| author | 2026-03-23 06:12:26 +0000 | |
|---|---|---|
| committer | 2026-03-23 06:12:26 +0000 | |
| commit | 79c40dcb08f0d512bd6d75d5e2acd3ddceec4530 (patch) | |
| tree | 1aca2bed2f125dd727f4112b8e9e1355745c841c /object/resolve/treefs_entry.go | |
| parent | object/resolve: Add TreeFS (diff) | |
| signature | No signature | |
object/resolve: Fix error handling; don't substring-match errors v0.1.96
Diffstat (limited to 'object/resolve/treefs_entry.go')
| -rw-r--r-- | object/resolve/treefs_entry.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/object/resolve/treefs_entry.go b/object/resolve/treefs_entry.go index 402b47d2..af9760ca 100644 --- a/object/resolve/treefs_entry.go +++ b/object/resolve/treefs_entry.go @@ -1,9 +1,9 @@ package resolve import ( + "errors" "fmt" "io/fs" - "strings" "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/objectid" @@ -37,11 +37,19 @@ func (treeFS *TreeFS) resolvePath(op treeFSOp, name string) (treeEntryValue, err } func (treeFS *TreeFS) pathResolveError(op treeFSOp, name string, err error) error { - if err != nil && strings.Contains(err.Error(), "not found") { + if _, ok := errors.AsType[*PathNotFoundError](err); ok { return treeFSPathError(op, name, fs.ErrNotExist) } - if err != nil && strings.Contains(err.Error(), "is not a tree") { + if _, ok := errors.AsType[*PathNotTreeError](err); ok { + return treeFSPathError(op, name, fs.ErrInvalid) + } + + if _, ok := errors.AsType[*PathEmptyError](err); ok { + return treeFSPathError(op, name, fs.ErrInvalid) + } + + if _, ok := errors.AsType[*PathSegmentEmptyError](err); ok { return treeFSPathError(op, name, fs.ErrInvalid) } |
