| 581 | } |
| 582 | |
| 583 | func TestRead(t *testing.T) { |
| 584 | require.NoError(t, os.Setenv("TESTING_VARIABLE", "ABCDEF")) |
| 585 | require.NoError(t, os.Setenv("TESTING_VARIABLE2", "ABC2 DEF2")) |
| 586 | |
| 587 | for _, case_ := range cases { |
| 588 | t.Run(case_.name, func(t *testing.T) { |
| 589 | tree, err := Read(strings.NewReader(case_.cfg), "test") |
| 590 | if !case_.fail && err != nil { |
| 591 | t.Error("unexpected failure:", err) |
| 592 | return |
| 593 | } |
| 594 | if case_.fail { |
| 595 | if err == nil { |
| 596 | t.Log("expected failure but Read succeeded") |
| 597 | t.Log("got tree:") |
| 598 | t.Logf("%+v", tree) |
| 599 | for _, node := range tree { |
| 600 | printTree(t, node, 0) |
| 601 | } |
| 602 | t.Fail() |
| 603 | return |
| 604 | } |
| 605 | return |
| 606 | } |
| 607 | |
| 608 | if !reflect.DeepEqual(case_.tree, tree) { |
| 609 | t.Log("parse result mismatch") |
| 610 | t.Log("expected:") |
| 611 | t.Logf("%+#v", case_.tree) |
| 612 | for _, node := range case_.tree { |
| 613 | printTree(t, node, 0) |
| 614 | } |
| 615 | t.Log("actual:") |
| 616 | t.Logf("%+#v", tree) |
| 617 | for _, node := range tree { |
| 618 | printTree(t, node, 0) |
| 619 | } |
| 620 | t.Fail() |
| 621 | } |
| 622 | }) |
| 623 | } |
| 624 | } |