Skip to content

Commit

Permalink
Better logging for parser tests (BurntSushi#65)
Browse files Browse the repository at this point in the history
* Better logging for parser tests

* Add spew to tests deps list
  • Loading branch information
pelletier committed Apr 22, 2016
1 parent e3b2497 commit 288bc57
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
20 changes: 17 additions & 3 deletions parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,47 @@ 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)
}
}
}
}

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{})
Expand Down
1 change: 1 addition & 0 deletions test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 288bc57

Please sign in to comment.