diff options
author | Jeffrey Wilcke <geffobscura@gmail.com> | 2015-06-30 08:22:19 +0800 |
---|---|---|
committer | Jeffrey Wilcke <geffobscura@gmail.com> | 2015-06-30 08:22:19 +0800 |
commit | 7625b07dd9a2a7b5c5a504c1276eea04596ac871 (patch) | |
tree | ce2a757cd4e0591fc15815b2dfae528ae517d36e /common/test_utils.go | |
parent | 72e2613a9fe3205fa5a67b72b832e03b2357ee88 (diff) | |
parent | 8f504063f465e0ca10c6bb53ee914d10a3d45c86 (diff) | |
download | dexon-7625b07dd9a2a7b5c5a504c1276eea04596ac871.tar dexon-7625b07dd9a2a7b5c5a504c1276eea04596ac871.tar.gz dexon-7625b07dd9a2a7b5c5a504c1276eea04596ac871.tar.bz2 dexon-7625b07dd9a2a7b5c5a504c1276eea04596ac871.tar.lz dexon-7625b07dd9a2a7b5c5a504c1276eea04596ac871.tar.xz dexon-7625b07dd9a2a7b5c5a504c1276eea04596ac871.tar.zst dexon-7625b07dd9a2a7b5c5a504c1276eea04596ac871.zip |
Merge branch 'release/0.9.34'
Diffstat (limited to 'common/test_utils.go')
-rw-r--r-- | common/test_utils.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/common/test_utils.go b/common/test_utils.go new file mode 100644 index 000000000..8346c147a --- /dev/null +++ b/common/test_utils.go @@ -0,0 +1,37 @@ +package common + +import ( + "encoding/json" + "fmt" + "io/ioutil" +) + +// LoadJSON reads the given file and unmarshals its content. +func LoadJSON(file string, val interface{}) error { + content, err := ioutil.ReadFile(file) + if err != nil { + return err + } + if err := json.Unmarshal(content, val); err != nil { + if syntaxerr, ok := err.(*json.SyntaxError); ok { + line := findLine(content, syntaxerr.Offset) + return fmt.Errorf("JSON syntax error at %v:%v: %v", file, line, err) + } + return fmt.Errorf("JSON unmarshal error in %v: %v", file, err) + } + return nil +} + +// findLine returns the line number for the given offset into data. +func findLine(data []byte, offset int64) (line int) { + line = 1 + for i, r := range string(data) { + if int64(i) >= offset { + return + } + if r == '\n' { + line++ + } + } + return +} |