diff --git a/codec/noop.go b/codec/noop.go index 9cd0b21a..9ae7a6bf 100644 --- a/codec/noop.go +++ b/codec/noop.go @@ -106,6 +106,10 @@ func (c *noopCodec) Unmarshal(d []byte, v interface{}, opts ...Option) error { case *string: *ve = string(d) return nil + case []byte: + ve = make([]byte, len(d)) + copy(ve, d) + return nil case *[]byte: *ve = d return nil diff --git a/codec/noop_test.go b/codec/noop_test.go index 9f99b5dd..ac09dae3 100644 --- a/codec/noop_test.go +++ b/codec/noop_test.go @@ -5,7 +5,7 @@ import ( "testing" ) -func TestNoopBytes(t *testing.T) { +func TestNoopBytesPtr(t *testing.T) { req := []byte("test req") rsp := make([]byte, len(req)) @@ -19,6 +19,20 @@ func TestNoopBytes(t *testing.T) { } } +func TestNoopBytes(t *testing.T) { + req := []byte("test req") + var rsp []byte + + nc := NewCodec() + if err := nc.Unmarshal(req, &rsp); err != nil { + t.Fatal(err) + } + + if !bytes.Equal(req, rsp) { + t.Fatalf("req not eq rsp: %s != %s", req, rsp) + } +} + func TestNoopString(t *testing.T) { req := []byte("test req") var rsp string