Skip to content

Commit c194d87

Browse files
authored
print history blob as JSON string (#235)
1 parent 5a748bd commit c194d87

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

common/util/stringer.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ func valueToString(v reflect.Value) string {
6767
case reflect.Invalid:
6868
return ""
6969
case reflect.Slice:
70-
// TODO: find a better way to handle this.
70+
if v.Type().Elem().Kind() == reflect.Uint8 {
71+
return fmt.Sprintf("[%v]", string(v.Bytes()))
72+
}
7173
return fmt.Sprintf("[len=%d]", v.Len())
7274
default:
7375
return fmt.Sprint(v.Interface())

common/util/stringer_test.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Copyright (c) 2017 Uber Technologies, Inc.
2+
//
3+
// Permission is hereby granted, free of charge, to any person obtaining a copy
4+
// of this software and associated documentation files (the "Software"), to deal
5+
// in the Software without restriction, including without limitation the rights
6+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
// copies of the Software, and to permit persons to whom the Software is
8+
// furnished to do so, subject to the following conditions:
9+
//
10+
// The above copyright notice and this permission notice shall be included in
11+
// all copies or substantial portions of the Software.
12+
//
13+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19+
// THE SOFTWARE.
20+
21+
package util
22+
23+
import (
24+
"reflect"
25+
"testing"
26+
27+
"github.com/stretchr/testify/require"
28+
)
29+
30+
func Test_byteSliceToString(t *testing.T) {
31+
data := []byte("blob-data")
32+
v := reflect.ValueOf(data)
33+
strVal := valueToString(v)
34+
35+
require.Equal(t, "[blob-data]", strVal)
36+
37+
intBlob := []int32{1, 2, 3}
38+
v2 := reflect.ValueOf(intBlob)
39+
strVal2 := valueToString(v2)
40+
41+
require.Equal(t, "[len=3]", strVal2)
42+
}

0 commit comments

Comments
 (0)