Skip to content

Commit

Permalink
test: add karlcow's testsuite
Browse files Browse the repository at this point in the history
Also refactor tests to improve maintainability
  • Loading branch information
tivie committed Jun 11, 2015
1 parent 9a2411b commit 42240ba
Show file tree
Hide file tree
Showing 216 changed files with 680 additions and 92 deletions.
9 changes: 9 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,15 @@ module.exports = function (grunt) {
reporter: 'spec'
}
},
karlcow: {
src: 'test/node/testsuite.karlcow.js',
options: {
globals: ['should'],
timeout: 3000,
ignoreLeaks: false,
reporter: 'spec'
}
},
browser: {
src: 'test/browser/**/*.js',
options: {
Expand Down
4 changes: 2 additions & 2 deletions dist/showdown.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/showdown.js.map

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/showdown.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/showdown.min.js.map

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
"grunt-conventional-changelog": "^1.1.0",
"grunt-jscs": "^1.2.0",
"grunt-simple-mocha": "^0.4.0",
"js-beautify": "^1.5.6",
"jscs": "^1.10.0",
"load-grunt-tasks": "^3.2.0",
"mocha": "*",
Expand Down
2 changes: 1 addition & 1 deletion src/subParsers/images.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ showdown.subParser('images', function (text, options, globals) {
url = showdown.helper.escapeCharacters(url, '*_', false);
var result = '<img src="' + url + '" alt="' + altText + '"';

if (title != "") {
if (title) {
title = title.replace(/"/g, '&quot;');
title = showdown.helper.escapeCharacters(title, '*_', false);
result += ' title="' + title + '"';
Expand Down
89 changes: 89 additions & 0 deletions test/bootstrap.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/**
* Created by Estevao on 08-06-2015.
*/

//jscs:disable requireCamelCaseOrUpperCaseIdentifiers
require('source-map-support').install();
require('chai').should();
var fs = require('fs'),
os = require('os'),
beautify = require('js-beautify').html_beautify,
beauOptions = {
eol: os.EOL,
indent_size: 2,
preserve_newlines: false
};

function getTestSuite(dir) {
return fs.readdirSync(dir)
.filter(filter())
.map(map(dir));
}

function filter() {
return function (file) {
var ext = file.slice(-3);
return (ext === '.md');
};
}

function map(dir) {
return function (file) {
var name = file.replace('.md', ''),
htmlPath = dir + name + '.html',
html = fs.readFileSync(htmlPath, 'utf8'),
mdPath = dir + name + '.md',
md = fs.readFileSync(mdPath, 'utf8');

return {
name: name,
input: md,
expected: html
};
};
}

function assertion(testCase, converter) {
return function () {
testCase.actual = converter.makeHtml(testCase.input);
testCase = normalize(testCase);

// Compare
testCase.actual.should.equal(testCase.expected);
};
}

//Normalize input/output
function normalize(testCase) {

// Normalize line returns
testCase.expected = testCase.expected.replace(/(\r\n)|\n|\r/g, '\n');
testCase.actual = testCase.actual.replace(/(\r\n)|\n|\r/g, '\n');

// Ignore all leading/trailing whitespace
testCase.expected = testCase.expected.split('\n').map(function (x) {
return x.trim();
}).join('\n');
testCase.actual = testCase.actual.split('\n').map(function (x) {
return x.trim();
}).join('\n');

// Remove extra lines
testCase.expected = testCase.expected.trim();
testCase.actual = testCase.actual.trim();

//Beautify
testCase.expected = beautify(testCase.expected, beauOptions);
testCase.actual = beautify(testCase.actual, beauOptions);

// Normalize line returns
testCase.expected = testCase.expected.replace(/(\r\n)|\n|\r/g, os.EOL);
testCase.actual = testCase.actual.replace(/(\r\n)|\n|\r/g, os.EOL);

return testCase;
}

module.exports = {
getTestSuite: getTestSuite,
assertion: assertion
};
5 changes: 5 additions & 0 deletions test/karlcow/2-paragraphs-hard-return-spaces.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<p>This is a first paragraph,
on multiple lines.</p>

<p>This is a second paragraph.
There are spaces in between the two.</p>
5 changes: 5 additions & 0 deletions test/karlcow/2-paragraphs-hard-return-spaces.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
This is a first paragraph,
on multiple lines.

This is a second paragraph.
There are spaces in between the two.
5 changes: 5 additions & 0 deletions test/karlcow/2-paragraphs-hard-return.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<p>This is a first paragraph,
on multiple lines.</p>

<p>This is a second paragraph
which has multiple lines too.</p>
5 changes: 5 additions & 0 deletions test/karlcow/2-paragraphs-hard-return.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
This is a first paragraph,
on multiple lines.

This is a second paragraph
which has multiple lines too.
3 changes: 3 additions & 0 deletions test/karlcow/2-paragraphs-line-returns.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<p>A first paragraph.</p>

<p>A second paragraph after 3 CR (carriage return).</p>
5 changes: 5 additions & 0 deletions test/karlcow/2-paragraphs-line-returns.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
A first paragraph.



A second paragraph after 3 CR (carriage return).
3 changes: 3 additions & 0 deletions test/karlcow/2-paragraphs-line-spaces.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<p>This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.</p>

<p>A few spaces and a new long long long long long long long long long long long long long long long long paragraph on 1 line.</p>
3 changes: 3 additions & 0 deletions test/karlcow/2-paragraphs-line-spaces.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.

A few spaces and a new long long long long long long long long long long long long long long long long paragraph on 1 line.
3 changes: 3 additions & 0 deletions test/karlcow/2-paragraphs-line-tab.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<p>This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.</p>

<p>1 tab to separate them and a new long long long long long long long long long long long long long long long long paragraph on 1 line.</p>
3 changes: 3 additions & 0 deletions test/karlcow/2-paragraphs-line-tab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.

1 tab to separate them and a new long long long long long long long long long long long long long long long long paragraph on 1 line.
3 changes: 3 additions & 0 deletions test/karlcow/2-paragraphs-line.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<p>This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.</p>

<p>A new long long long long long long long long long long long long long long long long paragraph on 1 line.</p>
3 changes: 3 additions & 0 deletions test/karlcow/2-paragraphs-line.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.

A new long long long long long long long long long long long long long long long long paragraph on 1 line.
5 changes: 5 additions & 0 deletions test/karlcow/EOL-CR+LF.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<p>These lines all end with end of line (EOL) sequences.</p>

<p>Seriously, they really do.</p>

<p>If you don't believe me: HEX EDIT!</p>
6 changes: 6 additions & 0 deletions test/karlcow/EOL-CR+LF.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
These lines all end with end of line (EOL) sequences.

Seriously, they really do.

If you don't believe me: HEX EDIT!

1 change: 1 addition & 0 deletions test/karlcow/EOL-CR.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>These lines all end with end of line (EOL) sequences.</p><p>Seriously, they really do.</p><p>If you don't believe me: HEX EDIT!</p>
Expand Down
1 change: 1 addition & 0 deletions test/karlcow/EOL-CR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
These lines all end with end of line (EOL) sequences.Seriously, they really do.If you don't believe me: HEX EDIT!
Expand Down
5 changes: 5 additions & 0 deletions test/karlcow/EOL-LF.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<p>These lines all end with end of line (EOL) sequences.</p>

<p>Seriously, they really do.</p>

<p>If you don't believe me: HEX EDIT!</p>
6 changes: 6 additions & 0 deletions test/karlcow/EOL-LF.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
These lines all end with end of line (EOL) sequences.

Seriously, they really do.

If you don't believe me: HEX EDIT!

1 change: 1 addition & 0 deletions test/karlcow/ampersand-text-flow.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>An ampersand &amp; in the text flow is escaped as an html entity.</p>
1 change: 1 addition & 0 deletions test/karlcow/ampersand-text-flow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
An ampersand & in the text flow is escaped as an html entity.
1 change: 1 addition & 0 deletions test/karlcow/ampersand-uri.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>There is an <a href="http://validator.w3.org/check?uri=http://www.w3.org/&amp;verbose=1">ampersand</a> in the URI.</p>
1 change: 1 addition & 0 deletions test/karlcow/ampersand-uri.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
There is an [ampersand](http://validator.w3.org/check?uri=http://www.w3.org/&verbose=1) in the URI.
1 change: 1 addition & 0 deletions test/karlcow/asterisk-near-text.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>This is *an asterisk which should stay as is.</p>
1 change: 1 addition & 0 deletions test/karlcow/asterisk-near-text.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is \*an asterisk which should stay as is.
1 change: 1 addition & 0 deletions test/karlcow/asterisk.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>This is * an asterisk which should stay as is.</p>
1 change: 1 addition & 0 deletions test/karlcow/asterisk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is * an asterisk which should stay as is.
12 changes: 12 additions & 0 deletions test/karlcow/backslash-escape.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<p>\ backslash
` backtick
* asterisk
_ underscore
{} curly braces
[] square brackets
() parentheses
# hash mark
+ plus sign
- minus sign (hyphen)
. dot
! exclamation mark</p>
12 changes: 12 additions & 0 deletions test/karlcow/backslash-escape.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
\\ backslash
\` backtick
\* asterisk
\_ underscore
\{\} curly braces
\[\] square brackets
\(\) parentheses
\# hash mark
\+ plus sign
\- minus sign (hyphen)
\. dot
\! exclamation mark
5 changes: 5 additions & 0 deletions test/karlcow/blockquote-added-markup.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<blockquote>
<h1>heading level 1</h1>

<p>paragraph</p>
</blockquote>
3 changes: 3 additions & 0 deletions test/karlcow/blockquote-added-markup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
> # heading level 1
>
> paragraph
5 changes: 5 additions & 0 deletions test/karlcow/blockquote-line-2-paragraphs.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<blockquote>
<p>A blockquote with a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line.</p>

<p>and a second very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line.</p>
</blockquote>
3 changes: 3 additions & 0 deletions test/karlcow/blockquote-line-2-paragraphs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
>A blockquote with a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line.
>and a second very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line.
3 changes: 3 additions & 0 deletions test/karlcow/blockquote-line.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<blockquote>
<p>This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph in a blockquote.</p>
</blockquote>
1 change: 1 addition & 0 deletions test/karlcow/blockquote-line.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
>This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph in a blockquote.
5 changes: 5 additions & 0 deletions test/karlcow/blockquote-multiline-1-space-begin.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<blockquote>
<p>A blockquote
on multiple lines
like this.</p>
</blockquote>
3 changes: 3 additions & 0 deletions test/karlcow/blockquote-multiline-1-space-begin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
> A blockquote
> on multiple lines
> like this.
5 changes: 5 additions & 0 deletions test/karlcow/blockquote-multiline-1-space-end.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<blockquote>
<p>A blockquote
on multiple lines
like this. </p>
</blockquote>
3 changes: 3 additions & 0 deletions test/karlcow/blockquote-multiline-1-space-end.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
>A blockquote
>on multiple lines
>like this.
8 changes: 8 additions & 0 deletions test/karlcow/blockquote-multiline-2-paragraphs.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<blockquote>
<p>A blockquote
on multiple lines
like this.</p>

<p>But it has
two paragraphs.</p>
</blockquote>
6 changes: 6 additions & 0 deletions test/karlcow/blockquote-multiline-2-paragraphs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
>A blockquote
>on multiple lines
>like this.
>
>But it has
>two paragraphs.
5 changes: 5 additions & 0 deletions test/karlcow/blockquote-multiline.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<blockquote>
<p>A blockquote
on multiple lines
like this</p>
</blockquote>
3 changes: 3 additions & 0 deletions test/karlcow/blockquote-multiline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
>A blockquote
>on multiple lines
>like this
9 changes: 9 additions & 0 deletions test/karlcow/blockquote-nested-multiplereturn-level1.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<blockquote>
<p>This is the first level of quoting.</p>

<blockquote>
<p>This is nested blockquote.</p>
</blockquote>

<p>Back to the first level.</p>
</blockquote>
5 changes: 5 additions & 0 deletions test/karlcow/blockquote-nested-multiplereturn-level1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.
Loading

0 comments on commit 42240ba

Please sign in to comment.