'use strict'; const common = require('../common'); const assert = require('assert'); const fs = require('fs'); const path = require('path'); // The doctool currently uses js-yaml from the tool/eslint/ tree. try { require('../../tools/eslint/node_modules/js-yaml'); } catch (e) { return common.skip('missing js-yaml (eslint not present)'); } const processIncludes = require('../../tools/doc/preprocess.js'); 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: path.join(common.fixturesDir, 'sample_document.md'), html: '
fish
Redfish
array
<Array>Describe Foobar
in more detail here.
Describe Foobar II
in more detail here.
Describe ' +
'Deprecated thingy
in more detail here.
Describe Something
in more detail here. ' +
'
Look here!
' + '' + '' + 'I exist and am being linked to.
' + '' }, ]; testData.forEach((item) => { // Normalize expected data by stripping whitespace const expected = item.html.replace(/\s/g, ''); fs.readFile(item.file, 'utf8', common.mustCall((err, input) => { assert.ifError(err); processIncludes(item.file, input, common.mustCall((err, preprocessed) => { assert.ifError(err); html( { input: preprocessed, filename: 'foo', template: 'doc/template.html', nodeVersion: process.version, }, common.mustCall((err, output) => { assert.ifError(err); const actual = output.replace(/\s/g, ''); // Assert that the input stripped of all whitespace contains the // expected list assert.notStrictEqual(actual.indexOf(expected), -1); })); })); })); });