Commit ef76aa28 authored by Xianzhu Wang's avatar Xianzhu Wang Committed by Commit Bot

[layout test results.html] Treat MISSING as unexpected failure (regression)

This keeps consistent with legacy-results.html and rebaseline bots
which treat MISSING as regressions.

Also rename "unexpected failures" to "regressions" to be consistent
with "Regressions" in summary.

Also avoid exception when some test is directly under LayoutTests/
(where some developers like me put quick local layout tests).

Change-Id: I80da6c9f54c64c98089a90ab72ae51e821a06a7b
Reviewed-on: https://chromium-review.googlesource.com/807264
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: default avatarAleks Totic <atotic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521605}
parent 261c5fa9
...@@ -272,9 +272,9 @@ TestResult(CRASH) + TextExpectation(Failure) => [ Failure <b>Crash</b> ]</pre> ...@@ -272,9 +272,9 @@ TestResult(CRASH) + TextExpectation(Failure) => [ Failure <b>Crash</b> ]</pre>
<div id="dashboard"> <div id="dashboard">
<div> <div>
<span class="fix-width">Query</span> <span class="fix-width">Query</span>
<button id="button_unexpected_fail" onclick="javascript:Query.query('Unexpected failures', Filters.unexpectedFailure, true)"> <button id="button_regressions" onclick="javascript:Query.query('Regressions', Filters.regression, true)">
Unexpected Failure Regressions
<span id="count_unexpected_fail"></span> <span id="count_regressions"></span>
</button> </button>
<button onclick="javascript:Query.query('Unexpected passes', Filters.unexpectedPass, true)"> <button onclick="javascript:Query.query('Unexpected passes', Filters.unexpectedPass, true)">
Unexpected Pass Unexpected Pass
...@@ -400,8 +400,7 @@ class Traversal { ...@@ -400,8 +400,7 @@ class Traversal {
this.resultCounts[node.actualFinal]++; this.resultCounts[node.actualFinal]++;
action(node, path, this); action(node, path, this);
} }
} } else {
else {
for (let p of node.keys()) for (let p of node.keys())
this._helper(node.get(p), path + "/" + p, filter, action); this._helper(node.get(p), path + "/" + p, filter, action);
} }
...@@ -416,11 +415,10 @@ const PathParserGlobals = { ...@@ -416,11 +415,10 @@ const PathParserGlobals = {
class PathParser { class PathParser {
constructor(path) { constructor(path) {
this.path = path; this.path = path;
let [href, dir, file] = path.match("/(.*)/(.*)"); let href;
this.dir = dir; [href, this.dir, this.file] = path.match("/(.*/)?(.*)");
this.file = file; this.dir = this.dir || "";
let tmp; [, this.basename, this.extension] = this.file.match(/(.*)\.(\w+)/);
[tmp, this.basename, this.extension] = file.match(/(.*)\.(\w+)/);
this.testHref = this.testBaseHref() + href.replace(/\/virtual\/[^\/]*/, ""); this.testHref = this.testBaseHref() + href.replace(/\/virtual\/[^\/]*/, "");
} }
...@@ -430,7 +428,7 @@ class PathParser { ...@@ -430,7 +428,7 @@ class PathParser {
} }
resultLink(resultName) { resultLink(resultName) {
return this.dir + "/" + this.basename + resultName; return this.dir + this.basename + resultName;
} }
repaintOverlayLink() { repaintOverlayLink() {
...@@ -485,7 +483,7 @@ const Report = { ...@@ -485,7 +483,7 @@ const Report = {
let html = ` let html = `
<div class='expect' tabindex='0' data-id='${test.expectId}'> <div class='expect' tabindex='0' data-id='${test.expectId}'>
<div class='details'></div>${Report.printFlag(test)} <div class='details'></div>${Report.printFlag(test)}
${pathParser.dir}/<a target='test' tabindex='-1' href='${pathParser.testHref}'>${pathParser.file}</a> ${pathParser.dir}<a target='test' tabindex='-1' href='${pathParser.testHref}'>${pathParser.file}</a>
</div>`; </div>`;
traversal.html.push(html); traversal.html.push(html);
}, },
...@@ -541,7 +539,7 @@ const Report = { ...@@ -541,7 +539,7 @@ const Report = {
let key = test[key_title]; let key = test[key_title];
let html = "" let html = ""
+ `${Report.printFlag(test)}` + `${Report.printFlag(test)}`
+ pathParser.dir + "/" + pathParser.dir
+ "<a target='test' tabindex='-1' href='" + pathParser.testHref + "'>" + "<a target='test' tabindex='-1' href='" + pathParser.testHref + "'>"
+ pathParser.file + "</a>"; + pathParser.file + "</a>";
html = "<div class='expect' tabindex='0' data-id='"+ test.expectId +"'><div class='details'></div>" + html + "</div>"; html = "<div class='expect' tabindex='0' data-id='"+ test.expectId +"'><div class='details'></div>" + html + "</div>";
...@@ -851,7 +849,7 @@ const Filters = { ...@@ -851,7 +849,7 @@ const Filters = {
unexpectedPass: test => { unexpectedPass: test => {
return !Filters.containsPass(test.expectedMap) && Filters.containsPass(test.actualMap); return !Filters.containsPass(test.expectedMap) && Filters.containsPass(test.actualMap);
}, },
unexpectedFailure: test => { regression: test => {
if (Filters.containsPass(test.actualMap)) if (Filters.containsPass(test.actualMap))
return false; return false;
if (test.expectedMap.has("NEEDSMANUALREBASELINE") if (test.expectedMap.has("NEEDSMANUALREBASELINE")
...@@ -873,7 +871,7 @@ const Filters = { ...@@ -873,7 +871,7 @@ const Filters = {
return false; return false;
break; break;
case "MISSING": case "MISSING":
return false; break;
default: default:
console.error("Unexpected test result", est.actualMap.keys().next().value); console.error("Unexpected test result", est.actualMap.keys().next().value);
} }
...@@ -903,8 +901,8 @@ const GUI = { ...@@ -903,8 +901,8 @@ const GUI = {
GUI.printSummary(globalResults); GUI.printSummary(globalResults);
GUI.initEvents(); GUI.initEvents();
PathParser.initGlobals(results); PathParser.initGlobals(results);
// Show unexpected failures on startup. // Show regressions on startup.
document.querySelector("#button_unexpected_fail").click(); document.querySelector("#button_regressions").click();
}, },
convertToMap: function(o) { convertToMap: function(o) {
...@@ -1146,7 +1144,7 @@ const GUI = { ...@@ -1146,7 +1144,7 @@ const GUI = {
let singleLine = ""; let singleLine = "";
new Traversal(globalResults.tests).traverse(Query.lastReport.filter, (_, path) => { new Traversal(globalResults.tests).traverse(Query.lastReport.filter, (_, path) => {
let pathParser = new PathParser(path); let pathParser = new PathParser(path);
singleLine += pathParser.dir + "/" + pathParser.file + " "; singleLine += pathParser.dir + pathParser.file + " ";
}); });
let pre = document.createElement("pre"); let pre = document.createElement("pre");
pre.setAttribute("style", "overflow: hidden; color: white; height: 1px"); pre.setAttribute("style", "overflow: hidden; color: white; height: 1px");
...@@ -1174,7 +1172,7 @@ const GUI = { ...@@ -1174,7 +1172,7 @@ const GUI = {
// Initialize query counts. // Initialize query counts.
let counts = { let counts = {
"count_unexpected_pass": 0, "count_unexpected_pass": 0,
"count_unexpected_fail": 0, "count_regressions": 0,
"count_testexpectations": 0, "count_testexpectations": 0,
"count_flaky": 0, "count_flaky": 0,
"count_all": 0, "count_all": 0,
...@@ -1184,13 +1182,17 @@ const GUI = { ...@@ -1184,13 +1182,17 @@ const GUI = {
counts.count_all++; counts.count_all++;
if (Filters.unexpectedPass(test)) if (Filters.unexpectedPass(test))
counts.count_unexpected_pass++; counts.count_unexpected_pass++;
if (Filters.unexpectedFailure(test)) if (Filters.regression(test))
counts.count_unexpected_fail++; counts.count_regressions++;
if (Filters.notpass(test)) if (Filters.notpass(test))
counts.count_testexpectations++; counts.count_testexpectations++;
if (Filters.flaky(test)) if (Filters.flaky(test))
counts.count_flaky++; counts.count_flaky++;
}); });
console.assert(
counts.count_regressions == fullResults.num_regressions,
"Numbers of regressions mismatch: in fullResult:" + fullResults.num_regressions +
" filtered:" + counts.count_regressions);
for (let p in counts) for (let p in counts)
document.querySelector("#" + p).innerText = counts[p]; document.querySelector("#" + p).innerText = counts[p];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment