diff options
Diffstat (limited to 'vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go')
-rw-r--r-- | vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go b/vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go deleted file mode 100644 index 5248259b9..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go +++ /dev/null @@ -1,149 +0,0 @@ -package printer - -import ( - "bytes" - "errors" - "flag" - "fmt" - "io/ioutil" - "path/filepath" - "testing" - - "github.com/hashicorp/hcl/hcl/parser" -) - -var update = flag.Bool("update", false, "update golden files") - -const ( - dataDir = "testdata" -) - -type entry struct { - source, golden string -} - -// Use go test -update to create/update the respective golden files. -var data = []entry{ - {"complexhcl.input", "complexhcl.golden"}, - {"list.input", "list.golden"}, - {"list_comment.input", "list_comment.golden"}, - {"comment.input", "comment.golden"}, - {"comment_crlf.input", "comment.golden"}, - {"comment_aligned.input", "comment_aligned.golden"}, - {"comment_array.input", "comment_array.golden"}, - {"comment_end_file.input", "comment_end_file.golden"}, - {"comment_multiline_indent.input", "comment_multiline_indent.golden"}, - {"comment_multiline_no_stanza.input", "comment_multiline_no_stanza.golden"}, - {"comment_multiline_stanza.input", "comment_multiline_stanza.golden"}, - {"comment_newline.input", "comment_newline.golden"}, - {"comment_object_multi.input", "comment_object_multi.golden"}, - {"comment_standalone.input", "comment_standalone.golden"}, - {"empty_block.input", "empty_block.golden"}, - {"list_of_objects.input", "list_of_objects.golden"}, - {"multiline_string.input", "multiline_string.golden"}, - {"object_singleline.input", "object_singleline.golden"}, - {"object_with_heredoc.input", "object_with_heredoc.golden"}, -} - -func TestFiles(t *testing.T) { - for _, e := range data { - source := filepath.Join(dataDir, e.source) - golden := filepath.Join(dataDir, e.golden) - t.Run(e.source, func(t *testing.T) { - check(t, source, golden) - }) - } -} - -func check(t *testing.T, source, golden string) { - src, err := ioutil.ReadFile(source) - if err != nil { - t.Error(err) - return - } - - res, err := format(src) - if err != nil { - t.Error(err) - return - } - - // update golden files if necessary - if *update { - if err := ioutil.WriteFile(golden, res, 0644); err != nil { - t.Error(err) - } - return - } - - // get golden - gld, err := ioutil.ReadFile(golden) - if err != nil { - t.Error(err) - return - } - - // formatted source and golden must be the same - if err := diff(source, golden, res, gld); err != nil { - t.Error(err) - return - } -} - -// diff compares a and b. -func diff(aname, bname string, a, b []byte) error { - var buf bytes.Buffer // holding long error message - - // compare lengths - if len(a) != len(b) { - fmt.Fprintf(&buf, "\nlength changed: len(%s) = %d, len(%s) = %d", aname, len(a), bname, len(b)) - } - - // compare contents - line := 1 - offs := 1 - for i := 0; i < len(a) && i < len(b); i++ { - ch := a[i] - if ch != b[i] { - fmt.Fprintf(&buf, "\n%s:%d:%d: %q", aname, line, i-offs+1, lineAt(a, offs)) - fmt.Fprintf(&buf, "\n%s:%d:%d: %q", bname, line, i-offs+1, lineAt(b, offs)) - fmt.Fprintf(&buf, "\n\n") - break - } - if ch == '\n' { - line++ - offs = i + 1 - } - } - - if buf.Len() > 0 { - return errors.New(buf.String()) - } - return nil -} - -// format parses src, prints the corresponding AST, verifies the resulting -// src is syntactically correct, and returns the resulting src or an error -// if any. -func format(src []byte) ([]byte, error) { - formatted, err := Format(src) - if err != nil { - return nil, err - } - - // make sure formatted output is syntactically correct - if _, err := parser.Parse(formatted); err != nil { - return nil, fmt.Errorf("parse: %s\n%s", err, formatted) - } - - return formatted, nil -} - -// lineAt returns the line in text starting at offset offs. -func lineAt(text []byte, offs int) []byte { - i := offs - for i < len(text) && text[i] != '\n' { - i++ - } - return text[offs:i] -} |