fixup! util/vizerror: add new package for visible errors

Signed-off-by: Will Norris <will@tailscale.com>
This commit is contained in:
Will Norris 2023-02-01 10:38:45 -08:00 committed by Will Norris
parent a6c6979b85
commit 648aa00a28
2 changed files with 22 additions and 4 deletions

View File

@ -153,7 +153,7 @@ func TestStdHandler(t *testing.T) {
},
{
name: "handler returns user visible error",
name: "handler returns user-visible error",
rh: handlerErr(0, vizerror.New("visible error")),
r: req(bgCtx, "http://example.com/foo"),
wantCode: 500,
@ -169,6 +169,24 @@ func TestStdHandler(t *testing.T) {
},
},
{
name: "handler returns user-visible error wrapped by private error",
rh: handlerErr(0, fmt.Errorf("private internal error: %w", vizerror.New("visible error"))),
r: req(bgCtx, "http://example.com/foo"),
wantCode: 500,
wantLog: AccessLogRecord{
When: clock.Start,
Seconds: 1.0,
Proto: "HTTP/1.1",
Host: "example.com",
Method: "GET",
RequestURI: "/foo",
Err: "visible error",
Code: 500,
},
},
{
name: "handler returns generic error",
rh: handlerErr(0, testErr),

View File

@ -20,12 +20,12 @@ func (e Error) Error() string {
return e.err.Error()
}
// New returns an error that formats as the given text. Always returns a vizerror.Error.
// New returns an error that formats as the given text. It always returns a vizerror.Error.
func New(text string) error {
return Error{errors.New(text)}
}
// Errorf returns an Error with the specified format and values. Always returns a vizerror.Error.
// Errorf returns an Error with the specified format and values. It always returns a vizerror.Error.
func Errorf(format string, a ...any) error {
return Error{fmt.Errorf(format, a...)}
}
@ -35,7 +35,7 @@ func (e Error) Unwrap() error {
return e.err
}
// Wrap err with a vizerror.Error.
// Wrap wraps err with a vizerror.Error.
func Wrap(err error) error {
if err == nil {
return nil