Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: fix flaky doctool and test
Doctool tests have been failing a lot in CI on Win2008 R2. It appears
async functions and callback-based functions are being used in
combination such that the callback-based function cannot guarantee that
it will invoke its callback. Convert the callback-based functions to
async functions so we have one paradigm and reliable results.

Backport-PR-URL: #32642
PR-URL: #29979
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
  • Loading branch information
Trott authored and richardlau committed Apr 6, 2020
commit ed69a5f9887d6b671aa0d15bab188623ccf94ee9
32 changes: 11 additions & 21 deletions test/doctool/test-doctool-html.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const remark2rehype = require('remark-rehype');
const raw = require('rehype-raw');
const htmlStringify = require('rehype-stringify');

function toHTML({ input, filename, nodeVersion }, cb) {
async function toHTML({ input, filename, nodeVersion }) {
const content = unified()
.use(markdown)
.use(html.firstHeader)
Expand All @@ -34,10 +34,7 @@ function toHTML({ input, filename, nodeVersion }, cb) {
.use(htmlStringify)
.processSync(input);

html.toHTML(
{ input, content, filename, nodeVersion },
cb
);
return html.toHTML({ input, content, filename, nodeVersion });
}

// Test data is a list of objects with two properties.
Expand Down Expand Up @@ -107,23 +104,16 @@ testData.forEach(({ file, html }) => {
// Normalize expected data by stripping whitespace.
const expected = html.replace(spaces, '');

readFile(file, 'utf8', common.mustCall((err, input) => {
readFile(file, 'utf8', common.mustCall(async (err, input) => {
assert.ifError(err);
toHTML(
{
input: input,
filename: 'foo',
nodeVersion: process.version,
},
common.mustCall((err, output) => {
assert.ifError(err);
const output = await toHTML({ input: input,
filename: 'foo',
nodeVersion: process.version });

const actual = output.replace(spaces, '');
// Assert that the input stripped of all whitespace contains the
// expected markup.
assert(actual.includes(expected),
`ACTUAL: ${actual}\nEXPECTED: ${expected}`);
})
);
const actual = output.replace(spaces, '');
// Assert that the input stripped of all whitespace contains the
// expected markup.
assert(actual.includes(expected),
`ACTUAL: ${actual}\nEXPECTED: ${expected}`);
}));
});
17 changes: 6 additions & 11 deletions tools/doc/generate.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ if (!filename) {
}


fs.readFile(filename, 'utf8', (er, input) => {
fs.readFile(filename, 'utf8', async (er, input) => {
if (er) throw er;

const content = unified()
Expand All @@ -84,15 +84,10 @@ fs.readFile(filename, 'utf8', (er, input) => {

const basename = path.basename(filename, '.md');

html.toHTML(
{ input, content, filename, nodeVersion },
(err, html) => {
const target = path.join(outputDir, `${basename}.html`);
if (err) throw err;
fs.writeFileSync(target, html);
}
);
const myHtml = await html.toHTML({ input, content, filename, nodeVersion });
const htmlTarget = path.join(outputDir, `${basename}.html`);
fs.writeFileSync(htmlTarget, myHtml);

const target = path.join(outputDir, `${basename}.json`);
fs.writeFileSync(target, JSON.stringify(content.json, null, 2));
const jsonTarget = path.join(outputDir, `${basename}.json`);
fs.writeFileSync(jsonTarget, JSON.stringify(content.json, null, 2));
});
4 changes: 2 additions & 2 deletions tools/doc/html.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ const gtocHTML = unified()
const templatePath = path.join(docPath, 'template.html');
const template = fs.readFileSync(templatePath, 'utf8');

async function toHTML({ input, content, filename, nodeVersion }, cb) {
async function toHTML({ input, content, filename, nodeVersion }) {
filename = path.basename(filename, '.md');

const id = filename.replace(/\W+/g, '-');
Expand All @@ -87,7 +87,7 @@ async function toHTML({ input, content, filename, nodeVersion }, cb) {
HTML = HTML.replace('__ALTDOCS__', '');
}

cb(null, HTML);
return HTML;
}

// Set the section name based on the first header. Default to 'Index'.
Expand Down