mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-28 04:01:40 +00:00
Make RPCError an actual error and don't swallow its companion data
This commit is contained in:
@ -6,7 +6,6 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
events "github.com/tendermint/tmlibs/events"
|
||||
)
|
||||
|
||||
@ -60,6 +59,14 @@ type RPCError struct {
|
||||
Data string `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
func (err RPCError) Error() string {
|
||||
const baseFormat = "RPC error %v - %s"
|
||||
if err.Data != "" {
|
||||
return fmt.Sprintf(baseFormat+": %s", err.Code, err.Message, err.Data)
|
||||
}
|
||||
return fmt.Sprintf(baseFormat, err.Code, err.Message)
|
||||
}
|
||||
|
||||
type RPCResponse struct {
|
||||
JSONRPC string `json:"jsonrpc"`
|
||||
ID string `json:"id"`
|
||||
|
@ -4,6 +4,8 @@ import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"fmt"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
@ -30,3 +32,18 @@ func TestResponses(t *testing.T) {
|
||||
i := `{"jsonrpc":"2.0","id":"2","error":{"code":-32601,"message":"Method not found"}}`
|
||||
assert.Equal(string(h), string(i))
|
||||
}
|
||||
|
||||
func TestRPCError(t *testing.T) {
|
||||
assert.Equal(t, "RPC error 12 - Badness: One worse than a code 11",
|
||||
fmt.Sprintf("%v", &RPCError{
|
||||
Code: 12,
|
||||
Message: "Badness",
|
||||
Data: "One worse than a code 11",
|
||||
}))
|
||||
|
||||
assert.Equal(t, "RPC error 12 - Badness",
|
||||
fmt.Sprintf("%v", &RPCError{
|
||||
Code: 12,
|
||||
Message: "Badness",
|
||||
}))
|
||||
}
|
||||
|
Reference in New Issue
Block a user