Better logging for parser tests (#65)
* Better logging for parser tests * Add spew to tests deps list
This commit is contained in:
+17
-3
@@ -2,26 +2,34 @@ package toml
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/davecgh/go-spew/spew"
|
||||||
)
|
)
|
||||||
|
|
||||||
func assertTree(t *testing.T, tree *TomlTree, err error, ref map[string]interface{}) {
|
func assertSubTree(t *testing.T, path []string, tree *TomlTree, err error, ref map[string]interface{}) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Non-nil error:", err.Error())
|
t.Error("Non-nil error:", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for k, v := range ref {
|
for k, v := range ref {
|
||||||
|
nextPath := append(path, k)
|
||||||
|
t.Log("asserting path", nextPath)
|
||||||
// NOTE: directly access key instead of resolve by path
|
// NOTE: directly access key instead of resolve by path
|
||||||
// NOTE: see TestSpecialKV
|
// NOTE: see TestSpecialKV
|
||||||
switch node := tree.GetPath([]string{k}).(type) {
|
switch node := tree.GetPath([]string{k}).(type) {
|
||||||
case []*TomlTree:
|
case []*TomlTree:
|
||||||
|
t.Log("\tcomparing key", nextPath, "by array iteration")
|
||||||
for idx, item := range node {
|
for idx, item := range node {
|
||||||
assertTree(t, item, err, v.([]map[string]interface{})[idx])
|
assertSubTree(t, nextPath, item, err, v.([]map[string]interface{})[idx])
|
||||||
}
|
}
|
||||||
case *TomlTree:
|
case *TomlTree:
|
||||||
assertTree(t, node, err, v.(map[string]interface{}))
|
t.Log("\tcomparing key", nextPath, "by subtree assestion")
|
||||||
|
assertSubTree(t, nextPath, node, err, v.(map[string]interface{}))
|
||||||
default:
|
default:
|
||||||
|
t.Log("\tcomparing key", nextPath, "by string representation because it's of type", reflect.TypeOf(node))
|
||||||
if fmt.Sprintf("%v", node) != fmt.Sprintf("%v", v) {
|
if fmt.Sprintf("%v", node) != fmt.Sprintf("%v", v) {
|
||||||
t.Errorf("was expecting %v at %v but got %v", v, k, node)
|
t.Errorf("was expecting %v at %v but got %v", v, k, node)
|
||||||
}
|
}
|
||||||
@@ -29,6 +37,12 @@ func assertTree(t *testing.T, tree *TomlTree, err error, ref map[string]interfac
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func assertTree(t *testing.T, tree *TomlTree, err error, ref map[string]interface{}) {
|
||||||
|
t.Log("Asserting tree:\n", spew.Sdump(tree))
|
||||||
|
assertSubTree(t, []string{}, tree, err, ref)
|
||||||
|
t.Log("Finished tree assertion.")
|
||||||
|
}
|
||||||
|
|
||||||
func TestCreateSubTree(t *testing.T) {
|
func TestCreateSubTree(t *testing.T) {
|
||||||
tree := newTomlTree()
|
tree := newTomlTree()
|
||||||
tree.createSubTree([]string{"a", "b", "c"}, Position{})
|
tree.createSubTree([]string{"a", "b", "c"}, Position{})
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ function git_clone() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
go get github.com/pelletier/go-buffruneio
|
go get github.com/pelletier/go-buffruneio
|
||||||
|
go get github.com/davecgh/go-spew/spew
|
||||||
|
|
||||||
# get code for BurntSushi TOML validation
|
# get code for BurntSushi TOML validation
|
||||||
# pinning all to 'HEAD' for version 0.3.x work (TODO: pin to commit hash when tests stabilize)
|
# pinning all to 'HEAD' for version 0.3.x work (TODO: pin to commit hash when tests stabilize)
|
||||||
|
|||||||
Reference in New Issue
Block a user