From b8bc812a67d11f80ea7ff91d930cdae712c4ddb5 Mon Sep 17 00:00:00 2001 From: Russ Ross Date: Mon, 25 Jul 2011 11:39:02 -0600 Subject: [PATCH] table unit tests and fix for a crash uncovered by them --- block.go | 5 +++++ block_test.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/block.go b/block.go index 5327c2a..af0eb78 100644 --- a/block.go +++ b/block.go @@ -740,6 +740,11 @@ func (p *parser) tableHeader(out *bytes.Buffer, data []byte) (size int, columns i++ } + // trailing junk found after last column + if col >= colCount && data[i] != '\n' { + return + } + case data[i] != '|' && col+1 < colCount: // something else found where marker was required return diff --git a/block_test.go b/block_test.go index dac78da..e169900 100644 --- a/block_test.go +++ b/block_test.go @@ -642,3 +642,47 @@ func TestFencedCodeBlock(t *testing.T) { } doTestsBlock(t, tests, EXTENSION_FENCED_CODE) } + +func TestTable(t *testing.T) { + var tests = []string{ + "a | b\n---|---\nc | d\n", + "\n\n\n\n\n\n\n\n" + + "\n\n\n\n\n\n
ab
cd
\n", + + "a | b\n---|--\nc | d\n", + "

a | b\n---|--\nc | d

\n", + + "|a|b|c|d|\n|----|----|----|---|\n|e|f|g|h|\n", + "\n\n\n\n\n\n\n\n\n\n" + + "\n\n\n\n\n\n\n\n
abcd
efgh
\n", + + "*a*|__b__|[c](C)|d\n---|---|---|---\ne|f|g|h\n", + "\n\n\n\n\n\n\n\n\n\n" + + "\n\n\n\n\n\n\n\n
abcd
efgh
\n", + + "a|b|c\n---|---|---\nd|e|f\ng|h\ni|j|k|l|m\nn|o|p\n", + "\n\n\n\n\n\n\n\n\n" + + "\n\n\n\n\n\n\n" + + "\n\n\n\n\n\n" + + "\n\n\n\n\n\n" + + "\n\n\n\n\n\n
abc
def
gh
ijk
nop
\n", + + "a|b|c\n---|---|---\n*d*|__e__|f\n", + "\n\n\n\n\n\n\n\n\n" + + "\n\n\n\n\n\n\n
abc
def
\n", + + "a|b|c|d\n:--|--:|:-:|---\ne|f|g|h\n", + "\n\n\n\n\n" + + "\n\n\n\n\n" + + "\n\n\n\n" + + "\n\n\n\n
abcd
efgh
\n", + + "a|b|c\n---|---|---\n", + "\n\n\n\n\n\n\n\n\n\n\n
abc
\n", + + "a| b|c | d | e\n---|---|---|---|---\nf| g|h | i |j\n", + "\n\n\n\n\n\n\n\n\n\n\n" + + "\n\n\n\n\n\n\n\n\n
abcde
fghij
\n", + } + doTestsBlock(t, tests, EXTENSION_TABLES) +}