Sheriff-O-Matic: Transition more unit tests to mocha.

I've switched from using requestAnimationFrame to setTimeout because:

1. requestAnimationFrame will cause timeouts if the tab is in the background while the tests are running
2. setTimeout is less verbose, since we can just pass the function name itself (requestAnimationFrame calls the function with a parameter, which would break the "done" function, so we have to wrap it in an anonymous function)

BUG=40038
R=ojan@chromium.org,esprehn@chromium.org

Review URL: https://codereview.chromium.org/462453002

git-svn-id: svn://svn.chromium.org/blink/trunk@179988 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent ef7248b8
...@@ -27,14 +27,18 @@ module.exports = function(config) { ...@@ -27,14 +27,18 @@ module.exports = function(config) {
{pattern: 'bower_components/**/*.{js,html,css,map}', watched: true, included: false, served: true}, {pattern: 'bower_components/**/*.{js,html,css,map}', watched: true, included: false, served: true},
{pattern: 'node_modules/mocha/mocha.js', watched: true, included: true, served: true}, {pattern: 'node_modules/mocha/mocha.js', watched: true, included: true, served: true},
{pattern: 'polymer-load-warning.html', watched: true, included: false, served: true}, {pattern: 'polymer-load-warning.html', watched: true, included: false, served: true},
{pattern: 'model/**/*[^tests].html', watched: true, included: false, served: true}, {pattern: 'model/*.html', watched: true, included: false, served: true},
{pattern: 'ui/**/*[^tests].{js,html,css}', watched: true, included: false, served: true}, {pattern: 'model/test/*.html', watched: true, included: true, served: true},
{pattern: 'scripts/*.js', watched: true, included: true, served: true},
{pattern: 'ui/*.html', watched: true, included: false, served: true},
'ui/test/*', 'ui/test/*',
], ],
// list of files to exclude // list of files to exclude
exclude: [ exclude: [
'model/*tests.html',
'scripts/*tests.js', 'scripts/*tests.js',
'ui/*tests.html',
], ],
// preprocess matching files before serving them to the browser // preprocess matching files before serving them to the browser
......
...@@ -9,6 +9,7 @@ found in the LICENSE file. ...@@ -9,6 +9,7 @@ found in the LICENSE file.
<link rel="stylesheet" href="../node_modules/mocha/mocha.css"> <link rel="stylesheet" href="../node_modules/mocha/mocha.css">
<title>Sheriff-O-Matic Unit Tests</title> <title>Sheriff-O-Matic Unit Tests</title>
<script src="../scripts/ui.js"></script>
<script src="../bower_components/chai/chai.js"></script> <script src="../bower_components/chai/chai.js"></script>
<script src="../node_modules/mocha/mocha.js"></script> <script src="../node_modules/mocha/mocha.js"></script>
<script src="../bower_components/sugar/release/sugar-full.development.js"></script> <script src="../bower_components/sugar/release/sugar-full.development.js"></script>
......
...@@ -7,4 +7,9 @@ found in the LICENSE file. ...@@ -7,4 +7,9 @@ found in the LICENSE file.
<link rel="import" href="../model/test/ct-failure-group-tests.html"> <link rel="import" href="../model/test/ct-failure-group-tests.html">
<link rel="import" href="../ui/test/ct-builder-grid-tests.html"> <link rel="import" href="../ui/test/ct-builder-grid-tests.html">
<link rel="import" href="../ui/test/ct-builder-tests.html"> <link rel="import" href="../ui/test/ct-builder-tests.html">
<link rel="import" href="../ui/test/ct-commit-list-tests.html">
<link rel="import" href="../ui/test/ct-commit-tests.html">
<link rel="import" href="../ui/test/ct-embedded-flakiness-dashboard-tests.html">
<link rel="import" href="../ui/test/ct-failure-analyzer-tests.html">
<link rel="import" href="../ui/test/ct-failure-stream-tests.html">
<link rel="import" href="../ui/test/ct-last-updated-tests.html"> <link rel="import" href="../ui/test/ct-last-updated-tests.html">
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="ct-builder-grid.html">
<link rel="import" href="ct-builder.html">
<script>
(function () {
var kExampleFailures = [{
"testName": "plugins/gesture-events-scrolled.html",
"resultNodesByBuilder": {
"WebKit Win7 (dbg)": {
"actual": "CRASH",
"masterUrl": "http://master-one",
"earliestFailingBuild": "1",
},
"WebKit Mac10.6 (dbg)": {
"actual": "CRASH",
"masterUrl": "http://master-one",
"earliestFailingBuild": "2",
},
"WebKit Mac10.7": {
"actual": "TEXT",
"masterUrl": "http://master-one",
"earliestFailingBuild": "3",
}
},
"oldestFailingRevision": 177164,
"newestPassingRevision": 177165
}, {
"testName": "plugins/transformed-events.html",
"resultNodesByBuilder": {
"WebKit Win7 (dbg)": {
"actual": "TEXT",
"masterUrl": "http://master-one",
"earliestFailingBuild": "1",
},
"WebKit Mac10.7": {
"actual": "CRASH",
"masterUrl": "http://master-two",
"earliestFailingBuild": "4",
},
},
"oldestFailingRevision": 177164,
"newestPassingRevision": 177165
}];
var kExampleBuilderLatestRevisions = {
'WebKit Mac10.7': {
blink: 177164,
},
'WebKit Mac10.6 (dbg)': {
blink: 177166,
},
'WebKit Win7 (dbg)': {
blink: 177166,
},
};
module("ct-builder-grid");
asyncTest("basic", 5, function() {
var grid = document.createElement('ct-builder-grid');
grid.failures = kExampleFailures;
requestAnimationFrame(function() {
var builders = grid.shadowRoot.querySelectorAll('ct-builder');
equal(builders.length, 4);
deepEqual(builders[0].builder, new CTBuilder(
'http://master-one', 'WebKit Mac10.6 (dbg)', '2'));
deepEqual(builders[1].builder, new CTBuilder(
'http://master-one', 'WebKit Mac10.7', '3'));
deepEqual(builders[2].builder, new CTBuilder(
'http://master-two', 'WebKit Mac10.7', '4'));
deepEqual(builders[3].builder, new CTBuilder(
'http://master-one', 'WebKit Win7 (dbg)', '1'));
start();
});
});
})()
</script>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="ct-builder.html">
<link rel="import" href="../model/ct-builder.html">
<script>
(function () {
module("ct-builder");
asyncTest("basic", 4, function() {
var builder = document.createElement('ct-builder');
var masterUrl = 'http://url/';
var builderName = 'WebKit Linux (dbg)';
var firstFailingBuild = '1234';
builder.builder = new CTBuilder(masterUrl,
builderName, firstFailingBuild);
builder.async(function() {
var html = builder.shadowRoot.innerHTML;
var a = builder.shadowRoot.querySelector('a');
ok(a);
equal(a.href.indexOf(masterUrl), 0);
notEqual(a.href.indexOf(encodeURIComponent(builderName)), -1);
notEqual(a.href.indexOf(firstFailingBuild), -1);
start();
});
});
})()
</script>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="ct-commit-list.html">
<link rel="import" href="../model/ct-commit-log-mock.html">
<script>
(function () {
module("ct-commit-list");
asyncTest("basic", 1, function() {
var list = document.createElement('ct-commit-list');
list.commits = new CTCommitLogMock();
// FIXME: This test shouldn't rely on firstRevision being empty to pass.
list.commits.firstRevision = {};
var blinkCommits = list.commits.commits.blink;
var revision;
for (revision in blinkCommits)
break;
var numCommits = 2;
list.first = {blink: revision};
list.last = {blink: Number(revision) + numCommits};
requestAnimationFrame(function() {
var commits = list.shadowRoot.querySelectorAll('ct-commit');
equal(commits.length, numCommits);
start();
});
});
asyncTest("backwards", 1, function() {
var list = document.createElement('ct-commit-list');
list.commits = new CTCommitLogMock();
var blinkCommits = list.commits.commits.blink;
var revision;
for (revision in blinkCommits)
break;
list.first = {blink: revision};
list.last = {blink: Number(revision) - 1};
requestAnimationFrame(function() {
var commits = list.shadowRoot.querySelectorAll('ct-commit');
equal(commits.length, 0);
start();
});
});
})()
</script>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="ct-commit.html">
<link rel="import" href="../model/ct-commit-mock.html">
<script>
(function () {
module("ct-commit");
asyncTest("basic", 3, function() {
var commit = document.createElement('ct-commit');
commit.data = new CTCommitMock();
requestAnimationFrame(function() {
var html = commit.shadowRoot.innerHTML;
equal(html.indexOf('mkwst') != -1, true);
equal(html.indexOf('behavior for these types') != -1, true);
equal(commit.shadowRoot.querySelector('a').href, commit.data.url);
start();
});
});
})()
</script>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="ct-embedded-flakiness-dashboard.html">
<script>
(function() {
module("ct-embedded-flakiness-dashboard");
asyncTest("url", 1, function() {
var oldUrlForEmbeddedFlakinessDashboard = ui.urlForEmbeddedFlakinessDashboard;
var reset = function() {
ui.urlForEmbeddedFlakinessDashboard = oldUrlForEmbeddedFlakinessDashboard;
}
try {
ui.urlForEmbeddedFlakinessDashboard = function(test, step, tree) { return "about:blank#" + test + step + tree; }
var embeddedFlakinessDashboard = document.createElement('ct-embedded-flakiness-dashboard');
var testName = "foo/bar.html";
var step = "foo_tests";
var tree = "blink";
embeddedFlakinessDashboard.test = {
testName: testName,
step: step,
};
embeddedFlakinessDashboard.tree = tree;
requestAnimationFrame(function() {
var iframe = embeddedFlakinessDashboard.shadowRoot.querySelector('#iframe');
equal(iframe.src, ui.urlForEmbeddedFlakinessDashboard(testName, step, tree));
reset();
start();
});
} catch (e) {
reset();
}
});
asyncTest("heightChanged", 1, function() {
var embeddedFlakinessDashboard = document.createElement('ct-embedded-flakiness-dashboard');
function finishTest() {
window.removeEventListener('message', finishTest);
var iframe = embeddedFlakinessDashboard.shadowRoot.querySelector('#iframe');
equal(iframe.style.height, "100px");
start();
}
window.addEventListener('message', finishTest);
requestAnimationFrame(function() {
window.postMessage({command: 'heightChanged', height: "100"}, '*');
});
});
})()
</script>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="ct-failure-analyzer.html">
<script>
(function() {
module("ct-failure-analyzer");
test("_failureComparator", 1, function() {
var analyzer = document.createElement('ct-failure-analyzer');
var resultsByBuilder = {};
var failure1 = new CTFailure("step1", "reason1", resultsByBuilder, 123, 123);
var failure2 = new CTFailure("step1", "reason2", resultsByBuilder, 123, 123);
var failure3 = new CTFailure("step1", "reason3", resultsByBuilder, 123, 123);
var failure4 = new CTFailure("step2", "reason1", resultsByBuilder, 123, 123);
var failures = [failure4, failure3, failure2, failure1];
var expectedFailures = [failure1, failure2, failure3, failure4];
deepEqual(failures.sort(analyzer._failureComparator), expectedFailures);
});
test("_failureListComparator", 8, function() {
var analyzer = document.createElement('ct-failure-analyzer');
var revision1 = {
'chromium': 1,
'blink': 2
};
var revision2 = {
'chromium': 2,
'blink': 1
};
var revision3 = {
'chromium': 2,
'blink': 2
};
var resultsByBuilder = {};
var failure1 = new CTFailure("step", "reason", resultsByBuilder, revision1, revision1);
var failure2 = new CTFailure("step", "reason", resultsByBuilder, revision2, revision2);
var failure3 = new CTFailure("step", "reason", resultsByBuilder, revision3, revision3);
var failure4 = new CTFailure("step", "reason", resultsByBuilder, null, null);
// Sort by last revision first.
ok(analyzer._failureListComparator('chromium', [failure1], [failure2]) > 0);
ok(analyzer._failureListComparator('chromium', [failure2], [failure1]) < 0);
ok(analyzer._failureListComparator('chromium', [failure1], [failure1]) == 0);
// If the tree revisions are equal, take others.
ok(analyzer._failureListComparator('chromium', [failure2], [failure3]) > 0);
// Prioritize the given tree.
ok(analyzer._failureListComparator('chromium', [failure1], [failure2]) > 0);
ok(analyzer._failureListComparator('blink', [failure1], [failure2]) < 0);
// Default to 'chromium'.
ok(analyzer._failureListComparator(undefined, [failure1], [failure2]) > 0);
// Failures without a revision go to the end.
ok(analyzer._failureListComparator('chromium', [failure4], [failure1]) < 0);
});
})()
</script>
...@@ -6,6 +6,8 @@ found in the LICENSE file. ...@@ -6,6 +6,8 @@ found in the LICENSE file.
<link rel="import" href="../ct-builder-grid.html"> <link rel="import" href="../ct-builder-grid.html">
<link rel="import" href="../ct-builder.html">
<script> <script>
(function () { (function () {
...@@ -16,12 +18,18 @@ var kExampleFailures = [{ ...@@ -16,12 +18,18 @@ var kExampleFailures = [{
"resultNodesByBuilder": { "resultNodesByBuilder": {
"WebKit Win7 (dbg)": { "WebKit Win7 (dbg)": {
"actual": "CRASH", "actual": "CRASH",
"masterUrl": "http://master-one",
"earliestFailingBuild": "1",
}, },
"WebKit Mac10.6 (dbg)": { "WebKit Mac10.6 (dbg)": {
"actual": "CRASH", "actual": "CRASH",
"masterUrl": "http://master-one",
"earliestFailingBuild": "2",
}, },
"WebKit Mac10.7": { "WebKit Mac10.7": {
"actual": "TEXT", "actual": "TEXT",
"masterUrl": "http://master-one",
"earliestFailingBuild": "3",
} }
}, },
"oldestFailingRevision": 177164, "oldestFailingRevision": 177164,
...@@ -31,9 +39,13 @@ var kExampleFailures = [{ ...@@ -31,9 +39,13 @@ var kExampleFailures = [{
"resultNodesByBuilder": { "resultNodesByBuilder": {
"WebKit Win7 (dbg)": { "WebKit Win7 (dbg)": {
"actual": "TEXT", "actual": "TEXT",
"masterUrl": "http://master-one",
"earliestFailingBuild": "1",
}, },
"WebKit Mac10.7": { "WebKit Mac10.7": {
"actual": "CRASH", "actual": "CRASH",
"masterUrl": "http://master-two",
"earliestFailingBuild": "4",
}, },
}, },
"oldestFailingRevision": 177164, "oldestFailingRevision": 177164,
...@@ -58,28 +70,22 @@ describe('ct-builder-grid', function() { ...@@ -58,28 +70,22 @@ describe('ct-builder-grid', function() {
beforeEach(function(done) { beforeEach(function(done) {
grid = document.createElement('ct-builder-grid'); grid = document.createElement('ct-builder-grid');
grid.failures = kExampleFailures; grid.failures = kExampleFailures;
requestAnimationFrame(function() { done(); });
});
describe('basic grid', function() { setTimeout(done);
it('should show builders by result type and debug/not debug', function() { });
var rows = grid.shadowRoot.querySelectorAll('tbody tr');
assert.lengthOf(rows, 2);
var row1 = grid.shadowRoot.querySelector('tbody td.CRASH').parentNode;
assert.lengthOf(row1.children, 2);
var builders = row1.children[1].querySelectorAll('ct-builder');
assert.lengthOf(builders, 3);
assert.equal(builders[0].builder, 'WebKit Mac10.6 (dbg)');
assert.equal(builders[1].builder, 'WebKit Mac10.7');
assert.equal(builders[2].builder, 'WebKit Win7 (dbg)');
var row2 = grid.shadowRoot.querySelector('tbody td.TEXT').parentNode; describe('builder grid UI', function() {
assert.lengthOf(row2.children, 2); it('should show all failing builders', function() {
builders = row2.children[1].querySelectorAll('ct-builder'); var builders = grid.shadowRoot.querySelectorAll('ct-builder');
assert.lengthOf(builders, 2); assert.lengthOf(builders, 4);
assert.equal(builders[0].builder, 'WebKit Mac10.7'); assert.deepEqual(builders[0].builder, new CTBuilder(
assert.equal(builders[1].builder, 'WebKit Win7 (dbg)'); 'http://master-one', 'WebKit Mac10.6 (dbg)', '2'));
assert.deepEqual(builders[1].builder, new CTBuilder(
'http://master-one', 'WebKit Mac10.7', '3'));
assert.deepEqual(builders[2].builder, new CTBuilder(
'http://master-two', 'WebKit Mac10.7', '4'));
assert.deepEqual(builders[3].builder, new CTBuilder(
'http://master-one', 'WebKit Win7 (dbg)', '1'));
}); });
}); });
}); });
......
...@@ -13,32 +13,24 @@ var assert = chai.assert; ...@@ -13,32 +13,24 @@ var assert = chai.assert;
describe('ct-builder', function() { describe('ct-builder', function() {
var builder; var builder;
var masterUrl = 'http://url';
var builderName = 'WebKit Linux (dbg)';
var firstFailingBuild = '1234';
beforeEach(function(done) { beforeEach(function(done) {
builder = document.createElement('ct-builder'); builder = document.createElement('ct-builder');
builder.builder = 'WebKit Linux (dbg)'; builder.builder = new CTBuilder(masterUrl, builderName, firstFailingBuild);
requestAnimationFrame(function() { done(); });
setTimeout(done);
}); });
describe('default builder UI', function() { describe('default builder UI', function() {
it('should link to the builder', function() { it('should link to the builder', function() {
var a = builder.shadowRoot.querySelector('a');
assert.ok(a.href);
assert.include(a.href, 'WebKit+Linux+(dbg)');
});
});
describe('builder UI with steps', function() {
beforeEach(function(done) {
builder.steps = ['gclient_revert', 'compile', 'unittests'];
requestAnimationFrame(function() { done(); });
});
it('should link to builder and show steps', function() {
var a = builder.shadowRoot.querySelector('a'); var a = builder.shadowRoot.querySelector('a');
assert.ok(a); assert.ok(a);
assert.include(a.href, 'WebKit+Linux+(dbg)'); assert(a.href.startsWith(masterUrl));
assert.include(a.innerText, 'gclient_revert, compile, unittests'); assert.include(a.href, encodeURIComponent(builderName));
assert.include(a.href, firstFailingBuild);
}); });
}); });
}); });
......
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="../ct-commit-list.html">
<link rel="import" href="../../model/ct-commit-log-mock.html">
<script>
(function () {
var assert = chai.assert;
describe('ct-commit-list', function() {
var list;
var numCommits;
beforeEach(function(done) {
list = document.createElement('ct-commit-list');
list.commits = new CTCommitLogMock();
// FIXME: This test shouldn't rely on firstRevision being empty to pass.
if (numCommits > 0)
list.commits.firstRevision = {};
var blinkCommits = list.commits.commits.blink;
var revision;
for (revision in blinkCommits)
break;
list.first = {blink: revision};
list.last = {blink: Number(revision) + numCommits};
setTimeout(done);
});
describe('commit list UI', function() {
before(function() {
numCommits = 2;
});
it('should show all commits in revision range', function() {
var commits = list.shadowRoot.querySelectorAll('ct-commit');
assert.lengthOf(commits, numCommits);
});
});
describe('empty commit list UI', function() {
before(function() {
numCommits = 0;
});
it('should show no commits for backwards revision range', function() {
var commits = list.shadowRoot.querySelectorAll('ct-commit');
assert.lengthOf(commits, numCommits);
});
});
});
})()
</script>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="../ct-commit.html">
<link rel="import" href="../../model/ct-commit-mock.html">
<script>
(function () {
var assert = chai.assert;
describe('ct-commit', function() {
var commit;
beforeEach(function(done) {
commit = document.createElement('ct-commit');
commit.data = new CTCommitMock();
setTimeout(done);
});
describe('commit UI', function() {
it('should show example commit', function() {
var html = commit.shadowRoot.innerHTML;
assert.include(html, 'mkwst');
assert.include(html, 'behavior for these types');
assert.equal(commit.shadowRoot.querySelector('a').href, commit.data.url);
});
});
});
})()
</script>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="../ct-embedded-flakiness-dashboard.html">
<script>
(function () {
var assert = chai.assert;
describe('ct-embedded-flakiness-dashboard', function() {
var embeddedFlakinessDashboard;
describe('embedded flakiness dashboard UI', function() {
var oldUrlForEmbeddedFlakinessDashboard = ui.urlForEmbeddedFlakinessDashboard;
var testName;
var step;
var tree;
beforeEach(function(done) {
ui.urlForEmbeddedFlakinessDashboard = function(test, step, tree) { return "about:blank#" + test + step + tree; }
embeddedFlakinessDashboard = document.createElement('ct-embedded-flakiness-dashboard');
testName = "foo/bar.html";
step = "foo_tests";
tree = "blink";
embeddedFlakinessDashboard.test = {
testName: testName,
step: step,
};
embeddedFlakinessDashboard.tree = tree;
setTimeout(done);
});
afterEach(function() {
ui.urlForEmbeddedFlakinessDashboard = oldUrlForEmbeddedFlakinessDashboard;
});
it('should point the iframe to the dashboard', function() {
var iframe = embeddedFlakinessDashboard.shadowRoot.querySelector('#iframe');
assert.equal(iframe.src, ui.urlForEmbeddedFlakinessDashboard(testName, step, tree));
});
});
describe('heightChanged', function() {
beforeEach(function(done) {
embeddedFlakinessDashboard = document.createElement('ct-embedded-flakiness-dashboard');
setTimeout(done);
});
it('should resize the iframe', function(done) {
var finishTest = function() {
window.removeEventListener('message', finishTest);
var iframe = embeddedFlakinessDashboard.shadowRoot.querySelector('#iframe');
assert.equal(iframe.style.height, '100px');
done();
};
window.addEventListener('message', finishTest);
window.postMessage({command: 'heightChanged', height: "100"}, '*');
});
});
});
})()
</script>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="../ct-failure-analyzer.html">
<script>
(function () {
var assert = chai.assert;
describe('ct-failure-analyzer', function() {
describe('_failureComparator', function() {
it('should sort failures', function() {
var analyzer = document.createElement('ct-failure-analyzer');
var resultsByBuilder = {};
var failure1 = new CTFailure("step1", "reason1", resultsByBuilder, 123, 123);
var failure2 = new CTFailure("step1", "reason2", resultsByBuilder, 123, 123);
var failure3 = new CTFailure("step1", "reason3", resultsByBuilder, 123, 123);
var failure4 = new CTFailure("step2", "reason1", resultsByBuilder, 123, 123);
var failures = [failure4, failure3, failure2, failure1];
var expectedFailures = [failure1, failure2, failure3, failure4];
assert.deepEqual(failures.sort(analyzer._failureComparator), expectedFailures);
});
});
describe('_failureListComparator', function() {
it('should compare failures correctly', function() {
var analyzer = document.createElement('ct-failure-analyzer');
var revision1 = {
'chromium': 1,
'blink': 2
};
var revision2 = {
'chromium': 2,
'blink': 1
};
var revision3 = {
'chromium': 2,
'blink': 2
};
var resultsByBuilder = {};
var failure1 = new CTFailure("step", "reason", resultsByBuilder, revision1, revision1);
var failure2 = new CTFailure("step", "reason", resultsByBuilder, revision2, revision2);
var failure3 = new CTFailure("step", "reason", resultsByBuilder, revision3, revision3);
var failure4 = new CTFailure("step", "reason", resultsByBuilder, null, null);
// Sort by last revision first.
assert(analyzer._failureListComparator('chromium', [failure1], [failure2]) > 0);
assert(analyzer._failureListComparator('chromium', [failure2], [failure1]) < 0);
assert(analyzer._failureListComparator('chromium', [failure1], [failure1]) == 0);
// If the tree revisions are equal, take others.
assert(analyzer._failureListComparator('chromium', [failure2], [failure3]) > 0);
// Prioritize the given tree.
assert(analyzer._failureListComparator('chromium', [failure1], [failure2]) > 0);
assert(analyzer._failureListComparator('blink', [failure1], [failure2]) < 0);
// Default to 'chromium'.
assert(analyzer._failureListComparator(undefined, [failure1], [failure2]) > 0);
// Failures without a revision go to the end.
assert(analyzer._failureListComparator('chromium', [failure4], [failure1]) < 0);
});
});
});
})()
</script>
...@@ -9,7 +9,7 @@ found in the LICENSE file. ...@@ -9,7 +9,7 @@ found in the LICENSE file.
<script> <script>
(function() { (function() {
var expect = chai.expect; var assert = chai.assert;
describe('ct-last-updated', function() { describe('ct-last-updated', function() {
var builder; var builder;
...@@ -25,7 +25,7 @@ describe('ct-last-updated', function() { ...@@ -25,7 +25,7 @@ describe('ct-last-updated', function() {
it('should have correct text', function() { it('should have correct text', function() {
var expected = 'Updated 5 min ago @ ' + builder.date.getHours() + ':' + var expected = 'Updated 5 min ago @ ' + builder.date.getHours() + ':' +
builder.date.getMinutes(); builder.date.getMinutes();
expect(builder.shadowRoot.innerHTML.trim()).to.equal(expected); assert.equal(builder.shadowRoot.innerHTML.trim(), expected);
}); });
}); });
}); });
......
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