Merge pull request #286 from russross/add-benchmark Repeat a run of reference tests under benchmark
Vytautas Ĺ altenis vytas@rtfb.lt
Sun, 31 Jul 2016 10:22:15 +0300
1 files changed,
53 insertions(+),
1 deletions(-)
jump to
M
ref_test.go
→
ref_test.go
@@ -13,7 +13,11 @@ //
package blackfriday -import "testing" +import ( + "io/ioutil" + "path/filepath" + "testing" +) func TestReference(t *testing.T) { files := []string{@@ -70,3 +74,51 @@ "Tidyness",
} doTestsReference(t, files, NoEmptyLineBeforeBlock) } + +// benchResultAnchor is an anchor variable to store the result of a benchmarked +// code so that compiler could never optimize away the call to runMarkdown() +var benchResultAnchor string + +func BenchmarkReference(b *testing.B) { + params := TestParams{Options: Options{Extensions: CommonExtensions}} + files := []string{ + "Amps and angle encoding", + "Auto links", + "Backslash escapes", + "Blockquotes with code blocks", + "Code Blocks", + "Code Spans", + "Hard-wrapped paragraphs with list-like lines", + "Horizontal rules", + "Inline HTML (Advanced)", + "Inline HTML (Simple)", + "Inline HTML comments", + "Links, inline style", + "Links, reference style", + "Links, shortcut references", + "Literal quotes in titles", + "Markdown Documentation - Basics", + "Markdown Documentation - Syntax", + "Nested blockquotes", + "Ordered and unordered lists", + "Strong and em together", + "Tabs", + "Tidyness", + } + var tests []string + for _, basename := range files { + filename := filepath.Join("testdata", basename+".text") + inputBytes, err := ioutil.ReadFile(filename) + if err != nil { + b.Errorf("Couldn't open '%s', error: %v\n", filename, err) + continue + } + tests = append(tests, string(inputBytes)) + } + b.ResetTimer() + for n := 0; n < b.N; n++ { + for _, test := range tests { + benchResultAnchor = runMarkdown(test, params) + } + } +}