Skip to content

Commit

Permalink
Merge pull request #80 from unistack-org/master
Browse files Browse the repository at this point in the history
merge master
  • Loading branch information
vtolstov authored Jan 21, 2022
2 parents 927ca87 + 8f7eebc commit 92b125c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
11 changes: 8 additions & 3 deletions errors/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ func New(id, detail string, code int32) error {
// Parse tries to parse a JSON string into an error. If that
// fails, it will set the given string as the error detail.
func Parse(err string) *Error {
e := new(Error)
errr := json.Unmarshal([]byte(err), e)
if errr != nil {
e := &Error{}
nerr := json.Unmarshal([]byte(err), e)
if nerr != nil {
e.Detail = err
}
return e
Expand Down Expand Up @@ -283,6 +283,10 @@ func (e *Error) Unmarshal(data []byte) error {
return r == ':'
})
for idx := 0; idx < len(nparts); idx++ {
if len(nparts[idx+1]) < 3 {
idx++
continue
}
switch {
case nparts[idx] == `"id"`:
e.ID = nparts[idx+1][1 : len(nparts[idx+1])-1]
Expand All @@ -297,6 +301,7 @@ func (e *Error) Unmarshal(data []byte) error {
}
e.Code = int32(c)
}
idx++
}
}
return nil
Expand Down
14 changes: 14 additions & 0 deletions errors/errors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,24 @@ package errors

import (
er "errors"
"fmt"
"net/http"
"testing"
)

func TestEmpty(t *testing.T) {
msg := "test"
var err *Error
err = FromError(fmt.Errorf(msg))
if err.Detail != msg {
t.Fatalf("invalid error %v", err)
}
err = FromError(fmt.Errorf(`{"id":"","detail":"%s","status":"%s","code":0}`, msg, msg))
if err.Detail != msg || err.Status != msg {
t.Fatalf("invalid error %#+v", err)
}
}

func TestFromError(t *testing.T) {
err := NotFound("go.micro.test", "%s", "example")
merr := FromError(err)
Expand Down

0 comments on commit 92b125c

Please sign in to comment.