Add Errorf (#14)

This commit is contained in:
Santiago Corredoira Lascaray 2016-04-30 00:38:57 +02:00 committed by Dave Cheney
parent cd6e0b425d
commit 7a0abd8f63
3 changed files with 37 additions and 0 deletions

View File

@ -130,6 +130,19 @@ func (c cause) Error() string { return c.Message() + ": " + c.Cause().Error()
func (c cause) Cause() error { return c.cause }
func (c cause) Message() string { return c.message }
// Errorf formats according to a format specifier and returns the string
// as a value that satisfies error.
func Errorf(format string, args ...interface{}) error {
pc, _, _, _ := runtime.Caller(1)
return struct {
error
location
}{
fmt.Errorf(format, args...),
location(pc),
}
}
// Wrap returns an error annotating the cause with message.
// If cause is nil, Wrap returns nil.
func Wrap(cause error, message string) error {

View File

@ -170,3 +170,20 @@ func TestWrapf(t *testing.T) {
}
}
}
func TestErrorf(t *testing.T) {
tests := []struct {
err error
want string
}{
{Errorf("read error without format specifiers"), "read error without format specifiers"},
{Errorf("read error with %d format specifier", 1), "read error with 1 format specifier"},
}
for _, tt := range tests {
got := tt.err.Error()
if got != tt.want {
t.Errorf("Errorf(%v): got: %q, want %q", tt.err, got, tt.want)
}
}
}

View File

@ -62,3 +62,10 @@ func ExampleWrapf() {
// Output: oh noes #2: whoops
}
func ExampleErrorf() {
err := errors.Errorf("whoops: %s", "foo")
errors.Fprint(os.Stdout, err)
// Output: github.com/pkg/errors/example_test.go:67: whoops: foo
}