Skip to content

Commit

Permalink
Review error wrappings
Browse files Browse the repository at this point in the history
  • Loading branch information
qdm12 committed Jun 29, 2022
1 parent a7d7c14 commit fd15b16
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 16 deletions.
12 changes: 10 additions & 2 deletions internal/trie/node/decode.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,17 @@ import (
)

var (
// ErrDecodeValue is defined since no sentinel error is defined
// in the scale package.
// TODO remove once the following issue is done:
// https://github.com/ChainSafe/gossamer/issues/2631 .
ErrDecodeValue = errors.New("cannot decode value")
ErrReadChildrenBitmap = errors.New("cannot read children bitmap")
ErrDecodeChildHash = errors.New("cannot decode child hash")
// ErrDecodeChildHash is defined since no sentinel error is defined
// in the scale package.
// TODO remove once the following issue is done:
// https://github.com/ChainSafe/gossamer/issues/2631 .
ErrDecodeChildHash = errors.New("cannot decode child hash")
)

// Decode decodes a node from a reader.
Expand All @@ -27,7 +35,7 @@ var (
func Decode(reader io.Reader) (n *Node, err error) {
variant, partialKeyLength, err := decodeHeader(reader)
if err != nil {
return nil, fmt.Errorf("cannot decode header: %w", err)
return nil, fmt.Errorf("decoding header: %w", err)
}

switch variant {
Expand Down
12 changes: 6 additions & 6 deletions internal/trie/node/decode_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@ func Test_Decode(t *testing.T) {
"no data": {
reader: bytes.NewReader(nil),
errWrapped: io.EOF,
errMessage: "cannot decode header: cannot read header byte: EOF",
errMessage: "decoding header: reading header byte: EOF",
},
"unknown node variant": {
reader: bytes.NewReader([]byte{0}),
errWrapped: ErrVariantUnknown,
errMessage: "cannot decode header: cannot decode header byte: node variant is unknown: for header byte 00000000",
errMessage: "decoding header: decoding header byte: node variant is unknown: for header byte 00000000",
},
"leaf decoding error": {
reader: bytes.NewReader([]byte{
Expand All @@ -57,7 +57,7 @@ func Test_Decode(t *testing.T) {
}),
errWrapped: io.EOF,
errMessage: "cannot decode leaf: cannot decode key: " +
"cannot read from reader: EOF",
"reading from reader: EOF",
},
"leaf success": {
reader: bytes.NewReader(
Expand All @@ -82,7 +82,7 @@ func Test_Decode(t *testing.T) {
}),
errWrapped: io.EOF,
errMessage: "cannot decode branch: cannot decode key: " +
"cannot read from reader: EOF",
"reading from reader: EOF",
},
"branch success": {
reader: bytes.NewReader(
Expand Down Expand Up @@ -194,7 +194,7 @@ func Test_decodeBranch(t *testing.T) {
variant: branchVariant.bits,
partialKeyLength: 1,
errWrapped: io.EOF,
errMessage: "cannot decode key: cannot read from reader: EOF",
errMessage: "cannot decode key: reading from reader: EOF",
},
"children bitmap read error": {
reader: bytes.NewBuffer([]byte{
Expand Down Expand Up @@ -317,7 +317,7 @@ func Test_decodeLeaf(t *testing.T) {
variant: leafVariant.bits,
partialKeyLength: 1,
errWrapped: io.EOF,
errMessage: "cannot decode key: cannot read from reader: EOF",
errMessage: "cannot decode key: reading from reader: EOF",
},
"value decoding error": {
reader: bytes.NewBuffer([]byte{
Expand Down
6 changes: 3 additions & 3 deletions internal/trie/node/header.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,13 @@ func decodeHeader(reader io.Reader) (variant byte,
buffer := make([]byte, 1)
_, err = reader.Read(buffer)
if err != nil {
return 0, 0, fmt.Errorf("cannot read header byte: %w", err)
return 0, 0, fmt.Errorf("reading header byte: %w", err)
}

variant, partialKeyLengthHeader, partialKeyLengthHeaderMask,
err := decodeHeaderByte(buffer[0])
if err != nil {
return 0, 0, fmt.Errorf("cannot decode header byte: %w", err)
return 0, 0, fmt.Errorf("decoding header byte: %w", err)
}

partialKeyLength = uint16(partialKeyLengthHeader)
Expand All @@ -100,7 +100,7 @@ func decodeHeader(reader io.Reader) (variant byte,
for {
_, err = reader.Read(buffer)
if err != nil {
return 0, 0, fmt.Errorf("cannot read key length: %w", err)
return 0, 0, fmt.Errorf("reading key length: %w", err)
}

previousKeyLength = partialKeyLength
Expand Down
6 changes: 3 additions & 3 deletions internal/trie/node/header_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -286,14 +286,14 @@ func Test_decodeHeader(t *testing.T) {
{buffArgCap: 1, err: errTest},
},
errWrapped: errTest,
errMessage: "cannot read header byte: test error",
errMessage: "reading header byte: test error",
},
"header byte decoding error": {
reads: []readCall{
{buffArgCap: 1, read: []byte{0b0011_1110}},
},
errWrapped: ErrVariantUnknown,
errMessage: "cannot decode header byte: node variant is unknown: for header byte 00111110",
errMessage: "decoding header byte: node variant is unknown: for header byte 00111110",
},
"partial key length contained in first byte": {
reads: []readCall{
Expand All @@ -308,7 +308,7 @@ func Test_decodeHeader(t *testing.T) {
{buffArgCap: 1, err: errTest},
},
errWrapped: errTest,
errMessage: "cannot read key length: test error",
errMessage: "reading key length: test error",
},
"partial key length spread on multiple bytes": {
reads: []readCall{
Expand Down
2 changes: 1 addition & 1 deletion internal/trie/node/key.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func decodeKey(reader io.Reader, partialKeyLength uint16) (b []byte, err error)
key := make([]byte, partialKeyLength/2+partialKeyLength%2)
n, err := reader.Read(key)
if err != nil {
return nil, fmt.Errorf("cannot read from reader: %w", err)
return nil, fmt.Errorf("reading from reader: %w", err)
} else if n != len(key) {
return nil, fmt.Errorf("%w: read %d bytes instead of expected %d bytes",
ErrReaderMismatchCount, n, len(key))
Expand Down
2 changes: 1 addition & 1 deletion internal/trie/node/key_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func Test_decodeKey(t *testing.T) {
},
partialKeyLength: 5,
errWrapped: errTest,
errMessage: "cannot read from reader: test error",
errMessage: "reading from reader: test error",
},

"key read bytes count mismatch": {
Expand Down

0 comments on commit fd15b16

Please sign in to comment.