test: add karlcow's testsuite

Also refactor tests to improve maintainability
pull/163/merge
Estevao Soares dos Santos 2015-06-11 01:29:42 +01:00
parent 9a2411b05f
commit 42240ba82c
216 changed files with 680 additions and 92 deletions

View File

@ -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: {

4
dist/showdown.js vendored
View File

@ -1,4 +1,4 @@
;/*! showdown 08-06-2015 */
;/*! showdown 11-06-2015 */
(function(){
/**
* Created by Tivie on 06-01-2015.
@ -1543,7 +1543,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 + '"';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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": "*",

View File

@ -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 + '"';

89
test/bootstrap.js Normal file
View File

@ -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
};

View File

@ -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>

View File

@ -0,0 +1,5 @@
This is a first paragraph,
on multiple lines.
This is a second paragraph.
There are spaces in between the two.

View File

@ -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>

View File

@ -0,0 +1,5 @@
This is a first paragraph,
on multiple lines.
This is a second paragraph
which has multiple lines too.

View File

@ -0,0 +1,3 @@
<p>A first paragraph.</p>
<p>A second paragraph after 3 CR (carriage return).</p>

View File

@ -0,0 +1,5 @@
A first paragraph.
A second paragraph after 3 CR (carriage return).

View File

@ -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>

View File

@ -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.

View File

@ -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>

View File

@ -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.

View File

@ -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>

View File

@ -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.

View File

@ -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>

View File

@ -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
test/karlcow/EOL-CR.html Normal file
View File

@ -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>

1
test/karlcow/EOL-CR.md Normal file
View File

@ -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!

5
test/karlcow/EOL-LF.html Normal file
View File

@ -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
test/karlcow/EOL-LF.md Normal file
View File

@ -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!

View File

@ -0,0 +1 @@
<p>An ampersand &amp; in the text flow is escaped as an html entity.</p>

View File

@ -0,0 +1 @@
An ampersand & in the text flow is escaped as an html entity.

View File

@ -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>

View File

@ -0,0 +1 @@
There is an [ampersand](http://validator.w3.org/check?uri=http://www.w3.org/&verbose=1) in the URI.

View File

@ -0,0 +1 @@
<p>This is *an asterisk which should stay as is.</p>

View File

@ -0,0 +1 @@
This is \*an asterisk which should stay as is.

View File

@ -0,0 +1 @@
<p>This is * an asterisk which should stay as is.</p>

1
test/karlcow/asterisk.md Normal file
View File

@ -0,0 +1 @@
This is * an asterisk which should stay as is.

View File

@ -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>

View File

@ -0,0 +1,12 @@
\\ backslash
\` backtick
\* asterisk
\_ underscore
\{\} curly braces
\[\] square brackets
\(\) parentheses
\# hash mark
\+ plus sign
\- minus sign (hyphen)
\. dot
\! exclamation mark

View File

@ -0,0 +1,5 @@
<blockquote>
<h1>heading level 1</h1>
<p>paragraph</p>
</blockquote>

View File

@ -0,0 +1,3 @@
> # heading level 1
>
> paragraph

View File

@ -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>

View File

@ -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.

View File

@ -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>

View File

@ -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.

View File

@ -0,0 +1,5 @@
<blockquote>
<p>A blockquote
on multiple lines
like this.</p>
</blockquote>

View File

@ -0,0 +1,3 @@
> A blockquote
> on multiple lines
> like this.

View File

@ -0,0 +1,5 @@
<blockquote>
<p>A blockquote
on multiple lines
like this. </p>
</blockquote>

View File

@ -0,0 +1,3 @@
>A blockquote
>on multiple lines
>like this.

View File

@ -0,0 +1,8 @@
<blockquote>
<p>A blockquote
on multiple lines
like this.</p>
<p>But it has
two paragraphs.</p>
</blockquote>

View File

@ -0,0 +1,6 @@
>A blockquote
>on multiple lines
>like this.
>
>But it has
>two paragraphs.

View File

@ -0,0 +1,5 @@
<blockquote>
<p>A blockquote
on multiple lines
like this</p>
</blockquote>

View File

@ -0,0 +1,3 @@
>A blockquote
>on multiple lines
>like this

View File

@ -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>

View File

@ -0,0 +1,5 @@
> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.

View File

@ -0,0 +1,7 @@
<blockquote>
<p>This is the first level of quoting.</p>
<blockquote>
<p>This is nested blockquote.</p>
</blockquote>
</blockquote>

View File

@ -0,0 +1,3 @@
> This is the first level of quoting.
>
> > This is nested blockquote.

View File

@ -0,0 +1,8 @@
<blockquote>
<p>This is the first level of quoting.</p>
<blockquote>
<p>This is nested blockquote.
Back to the first level.</p>
</blockquote>
</blockquote>

View File

@ -0,0 +1,3 @@
> This is the first level of quoting.
> > This is nested blockquote.
> Back to the first level.

View File

@ -0,0 +1,7 @@
<blockquote>
<p>This is the first level of quoting.</p>
<blockquote>
<p>This is nested blockquote.</p>
</blockquote>
</blockquote>

View File

@ -0,0 +1,2 @@
> This is the first level of quoting.
> > This is nested blockquote.

View File

@ -0,0 +1,3 @@
<pre><code>10 PRINT HELLO INFINITE
20 GOTO 10
</code></pre>

View File

@ -0,0 +1,2 @@
10 PRINT HELLO INFINITE
20 GOTO 10

View File

@ -0,0 +1,3 @@
<pre><code>10 PRINT &lt; &gt; &amp;
20 GOTO 10
</code></pre>

View File

@ -0,0 +1,2 @@
10 PRINT < > &
20 GOTO 10

View File

@ -0,0 +1,3 @@
<pre><code>10 PRINT HELLO INFINITE
20 GOTO 10
</code></pre>

View File

@ -0,0 +1,2 @@
10 PRINT HELLO INFINITE
20 GOTO 10

View File

@ -0,0 +1 @@
<p>as<em>te</em>risks</p>

View File

@ -0,0 +1 @@
as*te*risks

View File

@ -0,0 +1 @@
<p><em>single asterisks</em></p>

1
test/karlcow/em-star.md Normal file
View File

@ -0,0 +1 @@
*single asterisks*

View File

@ -0,0 +1 @@
<p><em>single underscores</em></p>

View File

@ -0,0 +1 @@
_single underscores_

View File

@ -0,0 +1 @@
<p>HTML entities are written using ampersand notation: &copy;</p>

View File

@ -0,0 +1 @@
HTML entities are written using ampersand notation: &copy;

View File

@ -0,0 +1 @@
<h1>This is an H1</h1>

View File

@ -0,0 +1,2 @@
This is an H1
=============

View File

@ -0,0 +1 @@
<h1>This is an H1</h1>

View File

@ -0,0 +1 @@
# This is an H1 #

View File

@ -0,0 +1 @@
<p># This is an H1</p>

View File

@ -0,0 +1 @@
# This is an H1

View File

@ -0,0 +1,3 @@
<h1>this is an h1 with two trailing spaces</h1>
<p>A new paragraph.</p>

View File

@ -0,0 +1,2 @@
# this is an h1 with two trailing spaces
A new paragraph.

View File

@ -0,0 +1 @@
<h1>This is an H1</h1>

View File

@ -0,0 +1 @@
# This is an H1

View File

@ -0,0 +1 @@
<h2>This is an H2</h2>

View File

@ -0,0 +1,2 @@
This is an H2
-------------

View File

@ -0,0 +1 @@
<h2>This is an H2</h2>

View File

@ -0,0 +1 @@
## This is an H2 ##

View File

@ -0,0 +1 @@
<h2>This is an H2</h2>

View File

@ -0,0 +1 @@
## This is an H2

View File

@ -0,0 +1 @@
<h3>This is an H3</h3>

View File

@ -0,0 +1 @@
### This is an H3 ###

View File

@ -0,0 +1 @@
<h3>This is an H3</h3>

View File

@ -0,0 +1 @@
### This is an H3

View File

@ -0,0 +1 @@
<h4>This is an H4</h4>

View File

@ -0,0 +1 @@
#### This is an H4 ####

View File

@ -0,0 +1 @@
<h4>This is an H4</h4>

View File

@ -0,0 +1 @@
#### This is an H4

View File

@ -0,0 +1 @@
<h5>This is an H5</h5>

View File

@ -0,0 +1 @@
##### This is an H5 #####

View File

@ -0,0 +1 @@
<h5>This is an H5</h5>

View File

@ -0,0 +1 @@
##### This is an H5

Some files were not shown because too many files have changed in this diff Show More