mirror of https://github.com/showdownjs/showdown
test: add karlcow's testsuite
Also refactor tests to improve maintainabilitypull/163/merge
parent
9a2411b05f
commit
42240ba82c
|
@ -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: {
|
||||
|
|
|
@ -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, '"');
|
||||
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
|
@ -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": "*",
|
||||
|
|
|
@ -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, '"');
|
||||
title = showdown.helper.escapeCharacters(title, '*_', false);
|
||||
result += ' title="' + title + '"';
|
||||
|
|
|
@ -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
|
||||
};
|
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
This is a first paragraph,
|
||||
on multiple lines.
|
||||
|
||||
This is a second paragraph.
|
||||
There are spaces in between the two.
|
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
This is a first paragraph,
|
||||
on multiple lines.
|
||||
|
||||
This is a second paragraph
|
||||
which has multiple lines too.
|
|
@ -0,0 +1,3 @@
|
|||
<p>A first paragraph.</p>
|
||||
|
||||
<p>A second paragraph after 3 CR (carriage return).</p>
|
|
@ -0,0 +1,5 @@
|
|||
A first paragraph.
|
||||
|
||||
|
||||
|
||||
A second paragraph after 3 CR (carriage return).
|
|
@ -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>
|
|
@ -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.
|
|
@ -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>
|
|
@ -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.
|
|
@ -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>
|
|
@ -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.
|
|
@ -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>
|
|
@ -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!
|
||||
|
|
@ -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>
|
|
@ -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!
|
|
@ -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>
|
|
@ -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!
|
||||
|
|
@ -0,0 +1 @@
|
|||
<p>An ampersand & in the text flow is escaped as an html entity.</p>
|
|
@ -0,0 +1 @@
|
|||
An ampersand & in the text flow is escaped as an html entity.
|
|
@ -0,0 +1 @@
|
|||
<p>There is an <a href="http://validator.w3.org/check?uri=http://www.w3.org/&verbose=1">ampersand</a> in the URI.</p>
|
|
@ -0,0 +1 @@
|
|||
There is an [ampersand](http://validator.w3.org/check?uri=http://www.w3.org/&verbose=1) in the URI.
|
|
@ -0,0 +1 @@
|
|||
<p>This is *an asterisk which should stay as is.</p>
|
|
@ -0,0 +1 @@
|
|||
This is \*an asterisk which should stay as is.
|
|
@ -0,0 +1 @@
|
|||
<p>This is * an asterisk which should stay as is.</p>
|
|
@ -0,0 +1 @@
|
|||
This is * an asterisk which should stay as is.
|
|
@ -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>
|
|
@ -0,0 +1,12 @@
|
|||
\\ backslash
|
||||
\` backtick
|
||||
\* asterisk
|
||||
\_ underscore
|
||||
\{\} curly braces
|
||||
\[\] square brackets
|
||||
\(\) parentheses
|
||||
\# hash mark
|
||||
\+ plus sign
|
||||
\- minus sign (hyphen)
|
||||
\. dot
|
||||
\! exclamation mark
|
|
@ -0,0 +1,5 @@
|
|||
<blockquote>
|
||||
<h1>heading level 1</h1>
|
||||
|
||||
<p>paragraph</p>
|
||||
</blockquote>
|
|
@ -0,0 +1,3 @@
|
|||
> # heading level 1
|
||||
>
|
||||
> paragraph
|
|
@ -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>
|
|
@ -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.
|
|
@ -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>
|
|
@ -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.
|
|
@ -0,0 +1,5 @@
|
|||
<blockquote>
|
||||
<p>A blockquote
|
||||
on multiple lines
|
||||
like this.</p>
|
||||
</blockquote>
|
|
@ -0,0 +1,3 @@
|
|||
> A blockquote
|
||||
> on multiple lines
|
||||
> like this.
|
|
@ -0,0 +1,5 @@
|
|||
<blockquote>
|
||||
<p>A blockquote
|
||||
on multiple lines
|
||||
like this. </p>
|
||||
</blockquote>
|
|
@ -0,0 +1,3 @@
|
|||
>A blockquote
|
||||
>on multiple lines
|
||||
>like this.
|
|
@ -0,0 +1,8 @@
|
|||
<blockquote>
|
||||
<p>A blockquote
|
||||
on multiple lines
|
||||
like this.</p>
|
||||
|
||||
<p>But it has
|
||||
two paragraphs.</p>
|
||||
</blockquote>
|
|
@ -0,0 +1,6 @@
|
|||
>A blockquote
|
||||
>on multiple lines
|
||||
>like this.
|
||||
>
|
||||
>But it has
|
||||
>two paragraphs.
|
|
@ -0,0 +1,5 @@
|
|||
<blockquote>
|
||||
<p>A blockquote
|
||||
on multiple lines
|
||||
like this</p>
|
||||
</blockquote>
|
|
@ -0,0 +1,3 @@
|
|||
>A blockquote
|
||||
>on multiple lines
|
||||
>like this
|
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
> This is the first level of quoting.
|
||||
>
|
||||
> > This is nested blockquote.
|
||||
>
|
||||
> Back to the first level.
|
|
@ -0,0 +1,7 @@
|
|||
<blockquote>
|
||||
<p>This is the first level of quoting.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>This is nested blockquote.</p>
|
||||
</blockquote>
|
||||
</blockquote>
|
|
@ -0,0 +1,3 @@
|
|||
> This is the first level of quoting.
|
||||
>
|
||||
> > This is nested blockquote.
|
|
@ -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>
|
|
@ -0,0 +1,3 @@
|
|||
> This is the first level of quoting.
|
||||
> > This is nested blockquote.
|
||||
> Back to the first level.
|
|
@ -0,0 +1,7 @@
|
|||
<blockquote>
|
||||
<p>This is the first level of quoting.</p>
|
||||
|
||||
<blockquote>
|
||||
<p>This is nested blockquote.</p>
|
||||
</blockquote>
|
||||
</blockquote>
|
|
@ -0,0 +1,2 @@
|
|||
> This is the first level of quoting.
|
||||
> > This is nested blockquote.
|
|
@ -0,0 +1,3 @@
|
|||
<pre><code>10 PRINT HELLO INFINITE
|
||||
20 GOTO 10
|
||||
</code></pre>
|
|
@ -0,0 +1,2 @@
|
|||
10 PRINT HELLO INFINITE
|
||||
20 GOTO 10
|
|
@ -0,0 +1,3 @@
|
|||
<pre><code>10 PRINT < > &
|
||||
20 GOTO 10
|
||||
</code></pre>
|
|
@ -0,0 +1,2 @@
|
|||
10 PRINT < > &
|
||||
20 GOTO 10
|
|
@ -0,0 +1,3 @@
|
|||
<pre><code>10 PRINT HELLO INFINITE
|
||||
20 GOTO 10
|
||||
</code></pre>
|
|
@ -0,0 +1,2 @@
|
|||
10 PRINT HELLO INFINITE
|
||||
20 GOTO 10
|
|
@ -0,0 +1 @@
|
|||
<p>as<em>te</em>risks</p>
|
|
@ -0,0 +1 @@
|
|||
as*te*risks
|
|
@ -0,0 +1 @@
|
|||
<p><em>single asterisks</em></p>
|
|
@ -0,0 +1 @@
|
|||
*single asterisks*
|
|
@ -0,0 +1 @@
|
|||
<p><em>single underscores</em></p>
|
|
@ -0,0 +1 @@
|
|||
_single underscores_
|
|
@ -0,0 +1 @@
|
|||
<p>HTML entities are written using ampersand notation: ©</p>
|
|
@ -0,0 +1 @@
|
|||
HTML entities are written using ampersand notation: ©
|
|
@ -0,0 +1 @@
|
|||
<h1>This is an H1</h1>
|
|
@ -0,0 +1,2 @@
|
|||
This is an H1
|
||||
=============
|
|
@ -0,0 +1 @@
|
|||
<h1>This is an H1</h1>
|
|
@ -0,0 +1 @@
|
|||
# This is an H1 #
|
|
@ -0,0 +1 @@
|
|||
<p># This is an H1</p>
|
|
@ -0,0 +1 @@
|
|||
# This is an H1
|
|
@ -0,0 +1,3 @@
|
|||
<h1>this is an h1 with two trailing spaces</h1>
|
||||
|
||||
<p>A new paragraph.</p>
|
|
@ -0,0 +1,2 @@
|
|||
# this is an h1 with two trailing spaces
|
||||
A new paragraph.
|
|
@ -0,0 +1 @@
|
|||
<h1>This is an H1</h1>
|
|
@ -0,0 +1 @@
|
|||
# This is an H1
|
|
@ -0,0 +1 @@
|
|||
<h2>This is an H2</h2>
|
|
@ -0,0 +1,2 @@
|
|||
This is an H2
|
||||
-------------
|
|
@ -0,0 +1 @@
|
|||
<h2>This is an H2</h2>
|
|
@ -0,0 +1 @@
|
|||
## This is an H2 ##
|
|
@ -0,0 +1 @@
|
|||
<h2>This is an H2</h2>
|
|
@ -0,0 +1 @@
|
|||
## This is an H2
|
|
@ -0,0 +1 @@
|
|||
<h3>This is an H3</h3>
|
|
@ -0,0 +1 @@
|
|||
### This is an H3 ###
|
|
@ -0,0 +1 @@
|
|||
<h3>This is an H3</h3>
|
|
@ -0,0 +1 @@
|
|||
### This is an H3
|
|
@ -0,0 +1 @@
|
|||
<h4>This is an H4</h4>
|
|
@ -0,0 +1 @@
|
|||
#### This is an H4 ####
|
|
@ -0,0 +1 @@
|
|||
<h4>This is an H4</h4>
|
|
@ -0,0 +1 @@
|
|||
#### This is an H4
|
|
@ -0,0 +1 @@
|
|||
<h5>This is an H5</h5>
|
|
@ -0,0 +1 @@
|
|||
##### This is an H5 #####
|
|
@ -0,0 +1 @@
|
|||
<h5>This is an H5</h5>
|
|
@ -0,0 +1 @@
|
|||
##### This is an H5
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue