diff --git a/ansi/renderer_test.go b/ansi/renderer_test.go new file mode 100644 index 0000000..aac0a2c --- /dev/null +++ b/ansi/renderer_test.go @@ -0,0 +1,92 @@ +package ansi + +import ( + "bytes" + "encoding/json" + "io/ioutil" + "path/filepath" + "strings" + "testing" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/extension" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/util" +) + +const ( + examplesDir = "../styles/examples/" + generate = false +) + +func TestRenderer(t *testing.T) { + files, err := filepath.Glob(examplesDir + "*.md") + if err != nil { + t.Fatal(err) + } + + for _, f := range files { + bn := strings.TrimSuffix(filepath.Base(f), ".md") + sn := filepath.Join(examplesDir, bn+".style") + tn := filepath.Join(examplesDir, bn+".test") + + in, err := ioutil.ReadFile(f) + if err != nil { + t.Fatal(err) + } + b, err := ioutil.ReadFile(sn) + if err != nil { + t.Fatal(err) + } + + options := Options{ + WordWrap: 80, + } + err = json.Unmarshal(b, &options.Styles) + if err != nil { + t.Fatal(err) + } + + md := goldmark.New( + goldmark.WithExtensions( + extension.GFM, + extension.DefinitionList, + ), + goldmark.WithParserOptions( + parser.WithAutoHeadingID(), + ), + ) + + ar := NewRenderer(options) + md.SetRenderer( + renderer.NewRenderer( + renderer.WithNodeRenderers(util.Prioritized(ar, 1000)))) + + var buf bytes.Buffer + err = md.Convert(in, &buf) + if err != nil { + t.Error(err) + } + + // generate + if generate { + err = ioutil.WriteFile(tn, buf.Bytes(), 0644) + if err != nil { + t.Fatal(err) + } + continue + } + + // verify + td, err := ioutil.ReadFile(tn) + if err != nil { + t.Fatal(err) + } + + if !bytes.Equal(td, buf.Bytes()) { + t.Errorf("Rendered output for %s doesn't match!\nExpected: `\n%s`\nGot: `\n%s`\n", + bn, string(td), buf.String()) + } + } +} diff --git a/styles/examples/block_quote.test b/styles/examples/block_quote.test new file mode 100644 index 0000000..99f4242 --- /dev/null +++ b/styles/examples/block_quote.test @@ -0,0 +1,3 @@ + +First line of quote                                                              +Second line                                                                      diff --git a/styles/examples/code.test b/styles/examples/code.test new file mode 100644 index 0000000..737be40 --- /dev/null +++ b/styles/examples/code.test @@ -0,0 +1,2 @@ + +This is a code.  diff --git a/styles/examples/code_block.test b/styles/examples/code_block.test new file mode 100644 index 0000000..84e6e45 --- /dev/null +++ b/styles/examples/code_block.test @@ -0,0 +1,2 @@ + +This is a code block. diff --git a/styles/examples/emph.test b/styles/examples/emph.test new file mode 100644 index 0000000..69d2772 --- /dev/null +++ b/styles/examples/emph.test @@ -0,0 +1,2 @@ + +This text is emphasized.  diff --git a/styles/examples/enumeration.test b/styles/examples/enumeration.test new file mode 100644 index 0000000..2eb6345 --- /dev/null +++ b/styles/examples/enumeration.test @@ -0,0 +1,3 @@ + +1. First Item                                                                    +2. Second Item                                                                   diff --git a/styles/examples/heading.test b/styles/examples/heading.test new file mode 100644 index 0000000..706ca5d --- /dev/null +++ b/styles/examples/heading.test @@ -0,0 +1,3 @@ + => h1 <=  + ## h2  + ### h3 \ No newline at end of file diff --git a/styles/examples/hr.test b/styles/examples/hr.test new file mode 100644 index 0000000..73b314f --- /dev/null +++ b/styles/examples/hr.test @@ -0,0 +1 @@ +--- \ No newline at end of file diff --git a/styles/examples/image.test b/styles/examples/image.test new file mode 100644 index 0000000..680c0a8 --- /dev/null +++ b/styles/examples/image.test @@ -0,0 +1,2 @@ + +Image [Image: https://charm.sh/logo.png].  diff --git a/styles/examples/link.test b/styles/examples/link.test new file mode 100644 index 0000000..17265b2 --- /dev/null +++ b/styles/examples/link.test @@ -0,0 +1,2 @@ + +This is a link (https://charm.sh).  diff --git a/styles/examples/list.test b/styles/examples/list.test new file mode 100644 index 0000000..806f39c --- /dev/null +++ b/styles/examples/list.test @@ -0,0 +1,4 @@ + +• First Item                                                                     +    • Nested List Item                                                           +• Second Item                                                                    diff --git a/styles/examples/strong.test b/styles/examples/strong.test new file mode 100644 index 0000000..6cf578b --- /dev/null +++ b/styles/examples/strong.test @@ -0,0 +1,2 @@ + +This text is strong.  diff --git a/styles/examples/table.test b/styles/examples/table.test new file mode 100644 index 0000000..d4ef339 --- /dev/null +++ b/styles/examples/table.test @@ -0,0 +1,7 @@ + + +--------+-------+ + | LABEL | VALUE | + +--------+-------+ + | First | foo | + | Second | bar | + +--------+-------+ diff --git a/styles/examples/task.test b/styles/examples/task.test new file mode 100644 index 0000000..958c404 --- /dev/null +++ b/styles/examples/task.test @@ -0,0 +1,3 @@ + +✓ Finished Task                                                                  +✗ Outstanding Task