Add better error handling for filesystem
This commit is contained in:
@@ -1,13 +1,45 @@
|
||||
package filesystem
|
||||
|
||||
import (
|
||||
. "github.com/franela/goblin"
|
||||
"io"
|
||||
"testing"
|
||||
|
||||
"emperror.dev/errors"
|
||||
. "github.com/franela/goblin"
|
||||
)
|
||||
|
||||
type stackTracer interface {
|
||||
StackTrace() errors.StackTrace
|
||||
}
|
||||
|
||||
func TestFilesystem_PathResolutionError(t *testing.T) {
|
||||
g := Goblin(t)
|
||||
|
||||
g.Describe("NewFilesystemError", func() {
|
||||
g.It("includes a stack trace for the error", func() {
|
||||
err := newFilesystemError(ErrCodeUnknownError, nil)
|
||||
|
||||
_, ok := err.(stackTracer)
|
||||
g.Assert(ok).IsTrue()
|
||||
})
|
||||
|
||||
g.It("properly wraps the underlying error cause", func() {
|
||||
underlying := io.EOF
|
||||
err := newFilesystemError(ErrCodeUnknownError, underlying)
|
||||
|
||||
_, ok := err.(stackTracer)
|
||||
g.Assert(ok).IsTrue()
|
||||
|
||||
_, ok = err.(*Error)
|
||||
g.Assert(ok).IsFalse()
|
||||
|
||||
fserr, ok := errors.Unwrap(err).(*Error)
|
||||
g.Assert(ok).IsTrue()
|
||||
g.Assert(fserr.Unwrap()).IsNotNil()
|
||||
g.Assert(fserr.Unwrap()).Equal(underlying)
|
||||
})
|
||||
})
|
||||
|
||||
g.Describe("NewBadPathResolutionError", func() {
|
||||
g.It("is can detect itself as an error correctly", func() {
|
||||
err := NewBadPathResolution("foo", "bar")
|
||||
@@ -18,6 +50,7 @@ func TestFilesystem_PathResolutionError(t *testing.T) {
|
||||
|
||||
g.It("returns <empty> if no destination path is provided", func() {
|
||||
err := NewBadPathResolution("foo", "")
|
||||
g.Assert(err).IsNotNil()
|
||||
g.Assert(err.Error()).Equal("filesystem: server path [foo] resolves to a location outside the server root: <empty>")
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user