|
@@ -0,0 +1,49 @@
|
|
|
+
|
|
|
+var showdown = new require('../src/showdown').Showdown,
|
|
|
+ convertor = new showdown.converter(),
|
|
|
+ fs = require('fs'),
|
|
|
+ path = require('path'),
|
|
|
+ should = require('should');
|
|
|
+
|
|
|
+// Load test cases from disk
|
|
|
+var cases = fs.readdirSync('test/cases').filter(function(file){
|
|
|
+ return ~file.indexOf('.md');
|
|
|
+}).map(function(file){
|
|
|
+ return file.replace('.md', '');
|
|
|
+});
|
|
|
+
|
|
|
+// Run each test case
|
|
|
+cases.forEach(function(test){
|
|
|
+ var name = test.replace(/[-.]/g, ' ');
|
|
|
+ it (name, function(){
|
|
|
+ var mdpath = path.join('test/cases', test + '.md'),
|
|
|
+ htmlpath = path.join('test/cases', test + '.html'),
|
|
|
+ md = fs.readFileSync(mdpath, 'utf8'),
|
|
|
+ expected = fs.readFileSync(htmlpath, 'utf8').trim(),
|
|
|
+ actual = convertor.makeHtml(md).trim();
|
|
|
+
|
|
|
+ // Normalize line returns
|
|
|
+ expected = expected.replace(/\r/g, '');
|
|
|
+
|
|
|
+ // Ignore all leading/trailing whitespace
|
|
|
+ expected = expected.split('\n').map(function(x){
|
|
|
+ return x.trim();
|
|
|
+ }).join('\n');
|
|
|
+ actual = actual.split('\n').map(function(x){
|
|
|
+ return x.trim();
|
|
|
+ }).join('\n');
|
|
|
+
|
|
|
+ // Convert whitespace to a visible character so that it shows up on error reports
|
|
|
+ expected = expected.replace(/ /g, '·');
|
|
|
+ expected = expected.replace(/\n/g, '•\n');
|
|
|
+ actual = actual.replace(/ /g, '·');
|
|
|
+ actual = actual.replace(/\n/g, '•\n');
|
|
|
+
|
|
|
+ if (test == 'github-style-codeblock') {
|
|
|
+ console.log(actual);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Compare
|
|
|
+ actual.should.equal(expected);
|
|
|
+ });
|
|
|
+});
|