From 288bc57940ae62ad5df837c3371c729211b68db1 Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Fri, 22 Apr 2016 11:01:31 +0200 Subject: [PATCH] Better logging for parser tests (#65) * Better logging for parser tests * Add spew to tests deps list --- parser_test.go | 20 +++++++++++++++++--- test.sh | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/parser_test.go b/parser_test.go index 710a922d..bbcbceed 100644 --- a/parser_test.go +++ b/parser_test.go @@ -2,26 +2,34 @@ package toml import ( "fmt" + "reflect" "testing" "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 { t.Error("Non-nil error:", err.Error()) return } for k, v := range ref { + nextPath := append(path, k) + t.Log("asserting path", nextPath) // NOTE: directly access key instead of resolve by path // NOTE: see TestSpecialKV switch node := tree.GetPath([]string{k}).(type) { case []*TomlTree: + t.Log("\tcomparing key", nextPath, "by array iteration") 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: - 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: + 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) { 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) { tree := newTomlTree() tree.createSubTree([]string{"a", "b", "c"}, Position{}) diff --git a/test.sh b/test.sh index 0a426e03..33ae6df2 100755 --- a/test.sh +++ b/test.sh @@ -20,6 +20,7 @@ function git_clone() { } go get github.com/pelletier/go-buffruneio +go get github.com/davecgh/go-spew/spew # get code for BurntSushi TOML validation # pinning all to 'HEAD' for version 0.3.x work (TODO: pin to commit hash when tests stabilize)