mirror of https://github.com/lukechilds/node.git
Browse Source
* Test the toHTML function in html.js. Check that given valid markdown it produces the expected html. One test case will prevent regressions of #5873. * Check that when given valid markdown toJSON produces valid JSON with the expected schema. * Add doctool to the list of built in tests so it runs in CI. PR-URL: https://github.com/nodejs/node/pull/6031 Fixes: https://github.com/nodejs/node/issues/5955 Reviewed-By: Roman Reiss <me@silverwind.io> Reviewed-By: Rich Trott <rtrott@gmail.com>process-exit-stdio-flushing
Ian Kronquist
9 years ago
committed by
silverwind
8 changed files with 152 additions and 4 deletions
@ -0,0 +1,48 @@ |
|||
'use strict'; |
|||
|
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const fs = require('fs'); |
|||
|
|||
const html = require('../../tools/doc/html.js'); |
|||
|
|||
// Test data is a list of objects with two properties.
|
|||
// The file property is the file path.
|
|||
// The html property is some html which will be generated by the doctool.
|
|||
// This html will be stripped of all whitespace because we don't currently
|
|||
// have an html parser.
|
|||
const testData = [ |
|||
{ |
|||
'file': common.fixturesDir + '/sample_document.md', |
|||
'html': '<ol><li>fish</li><li><p>fish</p></li><li><p>Redfish</p></li>' + |
|||
'<li>Bluefish</li></ol>' |
|||
}, |
|||
{ |
|||
'file': common.fixturesDir + '/order_of_end_tags_5873.md', |
|||
'html': '<h3>ClassMethod: Buffer.from(array) <span> ' + |
|||
'<a class="mark" href="#foo_class_method_buffer_from_array" ' + |
|||
'id="foo_class_method_buffer_from_array">#</a> </span> </h3><div' + |
|||
'class="signature"><ul><li><code>array</code><a ' + |
|||
'href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/' + |
|||
'Reference/Global_Objects/Array" class="type"><Array></a></li>' + |
|||
'</ul></div>' |
|||
}, |
|||
]; |
|||
|
|||
testData.forEach(function(item) { |
|||
// Normalize expected data by stripping whitespace
|
|||
const expected = item.html.replace(/\s/g, ''); |
|||
|
|||
fs.readFile(item.file, 'utf8', common.mustCall(function(err, input) { |
|||
assert.ifError(err); |
|||
html(input, 'foo', 'doc/template.html', |
|||
common.mustCall(function(err, output) { |
|||
assert.ifError(err); |
|||
|
|||
const actual = output.replace(/\s/g, ''); |
|||
// Assert that the input stripped of all whitespace contains the
|
|||
// expected list
|
|||
assert.notEqual(actual.indexOf(expected), -1); |
|||
})); |
|||
})); |
|||
}); |
@ -0,0 +1,78 @@ |
|||
'use strict'; |
|||
|
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const fs = require('fs'); |
|||
|
|||
const json = require('../../tools/doc/json.js'); |
|||
|
|||
// Outputs valid json with the expected fields when given simple markdown
|
|||
// Test data is a list of objects with two properties.
|
|||
// The file property is the file path.
|
|||
// The json property is some json which will be generated by the doctool.
|
|||
var testData = [ |
|||
{ |
|||
'file': common.fixturesDir + '/sample_document.md', |
|||
'json': { |
|||
'source': 'foo', |
|||
'modules': [ { 'textRaw': 'Sample Markdown', |
|||
'name': 'sample_markdown', |
|||
'modules': [ { 'textRaw':'Seussian Rhymes', |
|||
'name': 'seussian_rhymes', |
|||
'desc': '<ol>\n<li>fish</li>\n<li><p>fish</p>\n</li>\n<li>' + |
|||
'<p>Red fish</p>\n</li>\n<li>Blue fish</li>\n</ol>\n', |
|||
'type': 'module', |
|||
'displayName': 'Seussian Rhymes' |
|||
} ], |
|||
'type': 'module', |
|||
'displayName': 'Sample Markdown' |
|||
} ] |
|||
} |
|||
}, |
|||
{ |
|||
'file': common.fixturesDir + '/order_of_end_tags_5873.md', |
|||
'json': { |
|||
'source':'foo', |
|||
'modules': [ { |
|||
'textRaw': 'Title', |
|||
'name': 'title', |
|||
'modules': [ { |
|||
'textRaw': 'Subsection', |
|||
'name': 'subsection', |
|||
'classMethods': [ { |
|||
'textRaw': 'Class Method: Buffer.from(array)', |
|||
'type':'classMethod', |
|||
'name':'from', |
|||
'signatures': [ { |
|||
'params': [ { |
|||
'textRaw': '`array` {Array} ', |
|||
'name': 'array', |
|||
'type': 'Array' |
|||
} ] |
|||
}, |
|||
{ |
|||
'params' : [ { |
|||
'name': 'array' |
|||
} ] |
|||
} |
|||
] |
|||
} ], |
|||
'type': 'module', |
|||
'displayName': 'Subsection' |
|||
} ], |
|||
'type': 'module', |
|||
'displayName': 'Title' |
|||
} ] |
|||
} |
|||
} |
|||
]; |
|||
|
|||
testData.forEach(function(item) { |
|||
fs.readFile(item.file, 'utf8', common.mustCall(function(err, input) { |
|||
assert.ifError(err); |
|||
json(input, 'foo', common.mustCall(function(err, output) { |
|||
assert.ifError(err); |
|||
assert.deepStrictEqual(output, item.json); |
|||
})); |
|||
})); |
|||
}); |
@ -0,0 +1,7 @@ |
|||
import os |
|||
import sys |
|||
sys.path.append(os.path.join(os.path.dirname(__file__), '..')) |
|||
import testpy |
|||
|
|||
def GetConfiguration(context, root): |
|||
return testpy.SimpleTestConfiguration(context, root, 'doctool') |
@ -0,0 +1,6 @@ |
|||
# Title |
|||
|
|||
## Subsection |
|||
|
|||
### Class Method: Buffer.from(array) |
|||
* `array` {Array} |
@ -0,0 +1,8 @@ |
|||
# Sample Markdown |
|||
|
|||
## Seussian Rhymes |
|||
1. fish |
|||
2. fish |
|||
|
|||
* Red fish |
|||
* Blue fish |
Loading…
Reference in new issue