Skip to content

Commit 041b3fa

Browse files
committed
fix doc test script
1 parent 01be9a0 commit 041b3fa

File tree

2 files changed

+110
-94
lines changed

2 files changed

+110
-94
lines changed

scripts/DocTests.mjs

Lines changed: 54 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ async function testCode(id, code) {
154154
spawn.stderr.on("data", (function (data) {
155155
stderr.push(data);
156156
}));
157-
spawn.once("exit", (function (_code, _signal) {
157+
spawn.once("close", (function (_code, _signal) {
158158
resolve(stderr);
159159
}));
160160
}));
@@ -301,52 +301,60 @@ function getCodeBlocks(example) {
301301
}))), /* [] */0));
302302
}
303303

304-
var results = await Promise.all(getExamples(extractDocFromFile("src/RescriptCore.res")).map(async function (example) {
305-
var id = example.id.replaceAll(".", "_");
306-
var codes = getCodeBlocks(example);
307-
var results = await Promise.all(codes.map(async function (code) {
308-
return await testCode(id, code);
309-
}));
310-
return [
311-
example,
312-
results
313-
];
304+
async function main() {
305+
var results = await Promise.all(getExamples(extractDocFromFile("src/RescriptCore.res")).map(async function (example) {
306+
var id = example.id.replaceAll(".", "_");
307+
var codes = getCodeBlocks(example);
308+
var results = await Promise.all(codes.map(async function (code, $$int) {
309+
var id$1 = id + "_" + $$int.toString();
310+
return await testCode(id$1, code);
311+
}));
312+
return [
313+
example,
314+
results
315+
];
316+
}));
317+
var errors = Belt_Array.keepMap(results, (function (param) {
318+
var errors = Belt_Array.keepMap(param[1], (function (result) {
319+
if (result.TAG === "Ok") {
320+
return ;
321+
} else {
322+
return result._0;
323+
}
324+
}));
325+
if (errors.length > 0) {
326+
return [
327+
param[0],
328+
errors
329+
];
330+
}
331+
314332
}));
333+
errors.forEach(function (param) {
334+
var test = param[0];
335+
var cyan = function (s) {
336+
return "\x1b[36m" + s + "\x1b[0m";
337+
};
338+
var other = test.kind;
339+
var kind = other === "moduleAlias" ? "module alias" : other;
340+
var errorMessage = param[1].map(function (e) {
341+
return e.split("\n").filter(function (param, i) {
342+
return i !== 2;
343+
}).join("\n");
344+
}).join("\n");
345+
var message = "\x1B[1;31merror\x1B[0m: failed to compile examples from " + kind + " " + cyan(test.id) + "\n" + errorMessage;
346+
process.stderr.write(message);
347+
});
348+
if (errors.length === 0) {
349+
return 0;
350+
} else {
351+
return 1;
352+
}
353+
}
315354

316-
var errors = Belt_Array.keepMap(results, (function (param) {
317-
var errors = Belt_Array.keepMap(param[1], (function (result) {
318-
if (result.TAG === "Ok") {
319-
return ;
320-
} else {
321-
return result._0;
322-
}
323-
}));
324-
if (errors.length > 0) {
325-
return [
326-
param[0],
327-
errors
328-
];
329-
}
330-
331-
}));
332-
333-
errors.forEach(function (param) {
334-
var test = param[0];
335-
var cyan = function (s) {
336-
return "\x1b[36m" + s + "\x1b[0m";
337-
};
338-
var other = test.kind;
339-
var kind = other === "moduleAlias" ? "module alias" : other;
340-
var errorMessage = param[1].map(function (e) {
341-
return e.split("\n").filter(function (param, i) {
342-
return i !== 2;
343-
}).join("\n");
344-
}).join("\n");
345-
var message = "\x1B[1;31merror\x1B[0m: failed to compile examples from " + kind + " " + cyan(test.id) + "\n" + errorMessage;
346-
process.stderr.write(message);
347-
});
355+
var exitCode = await main();
348356

349-
process.exit(errors.length === 0 ? 0 : 1);
357+
process.exit(exitCode);
350358

351359
var Docgen;
352360

@@ -366,7 +374,7 @@ export {
366374
extractDocFromFile ,
367375
getExamples ,
368376
getCodeBlocks ,
369-
results ,
370-
errors ,
377+
main ,
378+
exitCode ,
371379
}
372380
/* dirname Not a pure module */

scripts/DocTests.res

Lines changed: 56 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ let testCode = async (~id, ~code) => {
175175
spawn.stderr->ChildProcess.on("data", data => {
176176
Array.push(stderr, data)
177177
})
178-
spawn->ChildProcess.once("exit", (_code, _signal) => {
178+
spawn->ChildProcess.once("close", (_code, _signal) => {
179179
resolve(stderr)
180180
})
181181
})
@@ -276,58 +276,66 @@ let getCodeBlocks = example => {
276276
->List.toArray
277277
}
278278

279-
let results =
280-
await extractDocFromFile("src/RescriptCore.res")
281-
->getExamples
282-
->Array.map(async example => {
283-
let id = example.id->String.replaceAll(".", "_")
284-
let codes = example->getCodeBlocks
285-
let results =
286-
await codes
287-
->Array.map(async code => await testCode(~id, ~code))
288-
->Promise.all
289-
(example, results)
290-
})
291-
->Promise.all
279+
let main = async () => {
280+
let results =
281+
await extractDocFromFile("src/RescriptCore.res")
282+
->getExamples
283+
->Array.map(async example => {
284+
let id = example.id->String.replaceAll(".", "_")
285+
let codes = example->getCodeBlocks
286+
let results =
287+
await codes
288+
->Array.mapWithIndex(async (code, int) => {
289+
let id = `${id}_${Int.toString(int)}`
290+
await testCode(~id, ~code)
291+
})
292+
->Promise.all
293+
(example, results)
294+
})
295+
->Promise.all
296+
297+
let errors = results->Belt.Array.keepMap(((example, results)) => {
298+
let errors = results->Belt.Array.keepMap(result =>
299+
switch result {
300+
| Ok() => None
301+
| Error(msg) => Some(msg)
302+
}
303+
)
292304

293-
let errors = results->Belt.Array.keepMap(((example, results)) => {
294-
let errors = results->Belt.Array.keepMap(result =>
295-
switch result {
296-
| Ok() => None
297-
| Error(msg) => Some(msg)
305+
if Array.length(errors) > 0 {
306+
Some((example, errors))
307+
} else {
308+
None
298309
}
299-
)
310+
})
300311

301-
if Array.length(errors) > 0 {
302-
Some((example, errors))
303-
} else {
304-
None
305-
}
306-
})
307-
308-
// Print Errors
309-
let () = errors->Array.forEach(((test, errors)) => {
310-
let red = s => `\x1B[1;31m${s}\x1B[0m`
311-
let cyan = s => `\x1b[36m${s}\x1b[0m`
312-
let kind = switch test.kind {
313-
| "moduleAlias" => "module alias"
314-
| other => other
315-
}
312+
// Print Errors
313+
let () = errors->Array.forEach(((test, errors)) => {
314+
let red = s => `\x1B[1;31m${s}\x1B[0m`
315+
let cyan = s => `\x1b[36m${s}\x1b[0m`
316+
let kind = switch test.kind {
317+
| "moduleAlias" => "module alias"
318+
| other => other
319+
}
316320

317-
let errorMessage =
318-
errors
319-
->Array.map(e => {
320-
// Drop line from path file
321-
e
322-
->String.split("\n")
323-
->Array.filterWithIndex((_, i) => i !== 2)
321+
let errorMessage =
322+
errors
323+
->Array.map(e => {
324+
// Drop line from path file
325+
e
326+
->String.split("\n")
327+
->Array.filterWithIndex((_, i) => i !== 2)
328+
->Array.joinWith("\n")
329+
})
324330
->Array.joinWith("\n")
325-
})
326-
->Array.joinWith("\n")
327331

328-
let message = `${"error"->red}: failed to compile examples from ${kind} ${test.id->cyan}\n${errorMessage}`
332+
let message = `${"error"->red}: failed to compile examples from ${kind} ${test.id->cyan}\n${errorMessage}`
329333

330-
Process.stderrWrite(message)
331-
})
334+
Process.stderrWrite(message)
335+
})
336+
337+
errors->Array.length == 0 ? 0 : 1
338+
}
339+
let exitCode = await main()
332340

333-
Process.exit(errors->Array.length == 0 ? 0 : 1)
341+
Process.exit(exitCode)

0 commit comments

Comments
 (0)