Skip to content

Commit 6b0c7c4

Browse files
Change format of rustdoc-js tests by putting query and correction directly alongside the expected values
1 parent a77659a commit 6b0c7c4

File tree

1 file changed

+49
-41
lines changed

1 file changed

+49
-41
lines changed

src/tools/rustdoc-js/tester.js

+49-41
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ function contentToDiffLine(key, value) {
2222
return `"${key}": "${value}",`;
2323
}
2424

25+
function shouldIgnoreField(fieldName) {
26+
return fieldName === "query" || fieldName === "correction";
27+
}
28+
2529
// This function is only called when no matching result was found and therefore will only display
2630
// the diff between the two items.
2731
function betterLookingDiff(entry, data) {
@@ -135,6 +139,9 @@ function valueCheck(fullPath, expected, result, error_text, queryName) {
135139
} else if (expected !== null && typeof expected !== "undefined" &&
136140
expected.constructor == Object) { // eslint-disable-line eqeqeq
137141
for (const key in expected) {
142+
if (shouldIgnoreField(key)) {
143+
continue;
144+
}
138145
if (!Object.prototype.hasOwnProperty.call(expected, key)) {
139146
continue;
140147
}
@@ -184,6 +191,9 @@ function runSearch(query, expected, doSearch, loadedFile, queryName) {
184191
const error_text = [];
185192

186193
for (const key in expected) {
194+
if (shouldIgnoreField(key)) {
195+
continue;
196+
}
187197
if (!Object.prototype.hasOwnProperty.call(expected, key)) {
188198
continue;
189199
}
@@ -260,84 +270,83 @@ function checkResult(error_text, loadedFile, displaySuccess) {
260270
return 1;
261271
}
262272

263-
function runCheck(loadedFile, key, callback) {
264-
const expected = loadedFile[key];
265-
const query = loadedFile.QUERY;
266-
267-
if (Array.isArray(query)) {
268-
if (!Array.isArray(expected)) {
269-
console.log("FAILED");
270-
console.log(`==> If QUERY variable is an array, ${key} should be an array too`);
271-
return 1;
272-
} else if (query.length !== expected.length) {
273-
console.log("FAILED");
274-
console.log(`==> QUERY variable should have the same length as ${key}`);
275-
return 1;
273+
function runCheckInner(callback, loadedFile, entry, getCorrections, extra) {
274+
if (typeof entry.query !== "string") {
275+
console.log("FAILED");
276+
console.log("==> Missing `query` field");
277+
return false;
278+
}
279+
let error_text = callback(entry.query, entry, extra ? "[ query `" + entry.query + "`]" : "");
280+
if (checkResult(error_text, loadedFile, false) !== 0) {
281+
return false;
282+
}
283+
if (entry.correction !== undefined) {
284+
error_text = runCorrections(entry.query, entry.correction, getCorrections, loadedFile);
285+
if (checkResult(error_text, loadedFile, false) !== 0) {
286+
return false;
276287
}
277-
for (let i = 0; i < query.length; ++i) {
278-
const error_text = callback(query[i], expected[i], "[ query `" + query[i] + "`]");
279-
if (checkResult(error_text, loadedFile, false) !== 0) {
288+
}
289+
return true;
290+
}
291+
292+
function runCheck(loadedFile, key, getCorrections, callback) {
293+
const expected = loadedFile[key];
294+
295+
if (Array.isArray(expected)) {
296+
for (const entry of expected) {
297+
if (!runCheckInner(callback, loadedFile, entry, getCorrections, true)) {
280298
return 1;
281299
}
282300
}
283-
console.log("OK");
284-
} else {
285-
const error_text = callback(query, expected, "");
286-
if (checkResult(error_text, loadedFile, true) !== 0) {
287-
return 1;
288-
}
301+
} else if (!runCheckInner(callback, loadedFile, expected, getCorrections, false)) {
302+
return 1;
289303
}
304+
console.log("OK");
290305
return 0;
291306
}
292307

308+
function hasCheck(content, checkName) {
309+
return content.startsWith(`const ${checkName}`) || content.includes(`\nconst ${checkName}`);
310+
}
311+
293312
function runChecks(testFile, doSearch, parseQuery, getCorrections) {
294313
let checkExpected = false;
295314
let checkParsed = false;
296-
let checkCorrections = false;
297-
let testFileContent = readFile(testFile) + "exports.QUERY = QUERY;";
315+
let testFileContent = readFile(testFile);
298316

299317
if (testFileContent.indexOf("FILTER_CRATE") !== -1) {
300318
testFileContent += "exports.FILTER_CRATE = FILTER_CRATE;";
301319
} else {
302320
testFileContent += "exports.FILTER_CRATE = null;";
303321
}
304322

305-
if (testFileContent.indexOf("\nconst EXPECTED") !== -1) {
323+
if (hasCheck(testFileContent, "EXPECTED")) {
306324
testFileContent += "exports.EXPECTED = EXPECTED;";
307325
checkExpected = true;
308326
}
309-
if (testFileContent.indexOf("\nconst PARSED") !== -1) {
327+
if (hasCheck(testFileContent, "PARSED")) {
310328
testFileContent += "exports.PARSED = PARSED;";
311329
checkParsed = true;
312330
}
313-
if (testFileContent.indexOf("\nconst CORRECTIONS") !== -1) {
314-
testFileContent += "exports.CORRECTIONS = CORRECTIONS;";
315-
checkCorrections = true;
316-
}
317-
if (!checkParsed && !checkExpected && !checkCorrections) {
331+
if (!checkParsed && !checkExpected) {
318332
console.log("FAILED");
319-
console.log("==> At least `PARSED`, `EXPECTED`, or `CORRECTIONS` is needed!");
333+
console.log("==> At least `PARSED` or `EXPECTED` is needed!");
320334
return 1;
321335
}
322336

323337
const loadedFile = loadContent(testFileContent);
324338
let res = 0;
325339

326340
if (checkExpected) {
327-
res += runCheck(loadedFile, "EXPECTED", (query, expected, text) => {
341+
res += runCheck(loadedFile, "EXPECTED", getCorrections, (query, expected, text) => {
328342
return runSearch(query, expected, doSearch, loadedFile, text);
329343
});
330344
}
331345
if (checkParsed) {
332-
res += runCheck(loadedFile, "PARSED", (query, expected, text) => {
346+
res += runCheck(loadedFile, "PARSED", getCorrections, (query, expected, text) => {
333347
return runParser(query, expected, parseQuery, text);
334348
});
335349
}
336-
if (checkCorrections) {
337-
res += runCheck(loadedFile, "CORRECTIONS", (query, expected) => {
338-
return runCorrections(query, expected, getCorrections, loadedFile);
339-
});
340-
}
341350
return res;
342351
}
343352

@@ -367,8 +376,7 @@ function loadSearchJS(doc_folder, resource_suffix) {
367376
},
368377
getCorrections: function(queryStr, filterCrate, currentCrate) {
369378
const parsedQuery = searchModule.parseQuery(queryStr);
370-
searchModule.execQuery(parsedQuery, searchWords,
371-
filterCrate, currentCrate);
379+
searchModule.execQuery(parsedQuery, searchWords, filterCrate, currentCrate);
372380
return parsedQuery.correction;
373381
},
374382
parseQuery: searchModule.parseQuery,

0 commit comments

Comments
 (0)