aboutsummaryrefslogtreecommitdiffstats
path: root/tests/init.go
diff options
context:
space:
mode:
authorTaylor Gerring <taylor.gerring@gmail.com>2015-06-11 06:11:30 +0800
committerTaylor Gerring <taylor.gerring@gmail.com>2015-06-19 04:20:45 +0800
commit6ff956394a26fe13c774797284220b8231ebf809 (patch)
treef5d739218bf55a62505cb809e076613c9bb5ebac /tests/init.go
parentac0637c41332de1f49fb0955f4fbe0fb908a77d5 (diff)
downloadgo-tangerine-6ff956394a26fe13c774797284220b8231ebf809.tar.gz
go-tangerine-6ff956394a26fe13c774797284220b8231ebf809.tar.zst
go-tangerine-6ff956394a26fe13c774797284220b8231ebf809.zip
DRY file loading
Diffstat (limited to 'tests/init.go')
-rw-r--r--tests/init.go32
1 files changed, 27 insertions, 5 deletions
diff --git a/tests/init.go b/tests/init.go
index 74d9499f1..aec06396b 100644
--- a/tests/init.go
+++ b/tests/init.go
@@ -2,6 +2,7 @@ package tests
import (
"encoding/json"
+ "fmt"
"io"
"io/ioutil"
"net/http"
@@ -24,14 +25,35 @@ var (
func readJSON(reader io.Reader, value interface{}) error {
data, err := ioutil.ReadAll(reader)
- err = json.Unmarshal(data, &value)
if err != nil {
- return err
+ return fmt.Errorf("Error reading JSON file", err.Error())
+ }
+
+ if err = json.Unmarshal(data, &value); err != nil {
+ if syntaxerr, ok := err.(*json.SyntaxError); ok {
+ line := findLine(data, syntaxerr.Offset)
+ return fmt.Errorf("JSON syntax error at line %v: %v", line, err)
+ }
+ return fmt.Errorf("JSON unmarshal error: %v", err)
}
return nil
}
-func CreateHttpTests(uri string, value interface{}) error {
+// 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
+}
+
+func readHttpFile(uri string, value interface{}) error {
resp, err := http.Get(uri)
if err != nil {
return err
@@ -45,7 +67,7 @@ func CreateHttpTests(uri string, value interface{}) error {
return nil
}
-func CreateFileTests(fn string, value interface{}) error {
+func readTestFile(fn string, value interface{}) error {
file, err := os.Open(fn)
if err != nil {
return err
@@ -54,7 +76,7 @@ func CreateFileTests(fn string, value interface{}) error {
err = readJSON(file, value)
if err != nil {
- return err
+ return fmt.Errorf("%s in file %s", err.Error(), fn)
}
return nil
}