Diff
Modified: trunk/Tools/ChangeLog (90440 => 90441)
--- trunk/Tools/ChangeLog 2011-07-06 06:59:56 UTC (rev 90440)
+++ trunk/Tools/ChangeLog 2011-07-06 07:04:02 UTC (rev 90441)
@@ -1,3 +1,21 @@
+2011-07-05 Adam Barth <[email protected]>
+
+ garden-o-matic should list the failing tests
+ https://bugs.webkit.org/show_bug.cgi?id=63978
+
+ Reviewed by Eric Seidel.
+
+ * Scripts/webkitpy/tool/servers/data/gardeningserver/config.js: Added.
+ * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
+ * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
+ * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
+ * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
+ * Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html:
+ * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js: Added.
+ * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js: Added.
+ * Scripts/webkitpy/tool/servers/gardeningserver.py:
+
+
2011-07-05 Eric Seidel <[email protected]>
Re-enable NRWT on Leopard now that bug 63973 is fixed.
Added: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/config.js (0 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/config.js (rev 0)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/config.js 2011-07-06 07:04:02 UTC (rev 90441)
@@ -0,0 +1,22 @@
+var config = config || {};
+
+(function() {
+
+config.builders = [
+ 'Webkit Win',
+ 'Webkit Vista',
+ // 'Webkit Win7',
+ 'Webkit Win (dbg)(1)',
+ 'Webkit Win (dbg)(2)',
+ 'Webkit Linux',
+ 'Webkit Linux 32',
+ 'Webkit Linux (dbg)(1)',
+ 'Webkit Linux (dbg)(2)',
+ 'Webkit Mac10.5',
+ 'Webkit Mac10.5 (dbg)(1)',
+ 'Webkit Mac10.5 (dbg)(2)',
+ 'Webkit Mac10.6',
+ 'Webkit Mac10.6 (dbg)',
+];
+
+})();
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html (90440 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html 2011-07-06 06:59:56 UTC (rev 90440)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html 2011-07-06 07:04:02 UTC (rev 90441)
@@ -10,7 +10,6 @@
h1 {
margin: 0px;
padding: 3px;
- background-color: #EFF5FB;
}
.butterbar {
width: 500px;
@@ -25,26 +24,36 @@
.butterbar .hide {
float: right;
}
+.toolbar {
+ float: right;
+}
+.failures {
+ padding: 3px;
+}
+.failures .test {
+ margin: 6px 3px;
+}
+.failures .builders {
+ color: #888;
+}
+.failures .builderName, .failures .actual {
+ float: left;
+ width: 200px;
+}
</style>
</head>
<body>
<div class="butterbar"><span class="status">Loading...</span> <a class="hide" href=""
+<div class="toolbar">
+ <button class="quit">Quit</button>
+</div>
<h1>Garden-O-Matic</h1>
-<ul>
- <li><button class="quit">Quit</button></li>
-</ul>
+<div class="failures"></div>
<script src=""
+<script src=""
<script src=""
<script src=""
+<script src=""
<script src=""
-<script>
-function logUnexpectedFailures(builderResults) {
- unexpectedFailures = builderResults.unexpectedFailures();
- console.log('== Unexpected Failures ==')
- console.log(unexpectedFailures);
-}
-
-results.fetchResultsForBuilder('Webkit Linux', logUnexpectedFailures);
-</script>
</body>
</html>
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js (90440 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js 2011-07-06 06:59:56 UTC (rev 90440)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js 2011-07-06 07:04:02 UTC (rev 90441)
@@ -1,19 +1,34 @@
(function() {
- function quit() {
+
+function quit()
+{
$.post('/quitquitquit', function(data){
- $('.butterbar .status').html(data)
- $('.butterbar').fadeIn();
+ $('.butterbar .status').html(data)
+ $('.butterbar').fadeIn();
});
- }
+}
- function hide() {
+function hide()
+{
$(this).parent().fadeOut();
- }
+}
- $('.hide').live('click', hide);
- $('.quit').live('click', quit);
+function fetchResults(onsuccess)
+{
+ results.fetchResultsByBuilder(config.builders, function(resultsByBuilder) {
+ unexpectedFailures = ui.resultsByTest(results.unexpectedFailuresByTest(resultsByBuilder));
+ $('.failures').append(unexpectedFailures);
+ onsuccess();
+ });
+}
- $(document).ready(function() {
- $('.butterbar').fadeOut();
- })
+$('.hide').live('click', hide);
+$('.quit').live('click', quit);
+
+$(document).ready(function() {
+ fetchResults(function() {
+ $('.butterbar').fadeOut();
+ });
+});
+
})();
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js (90440 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js 2011-07-06 06:59:56 UTC (rev 90440)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js 2011-07-06 07:04:02 UTC (rev 90441)
@@ -45,15 +45,30 @@
return !!node.actual;
}
-results.BuilderResults = function(m_resultsJSON)
+results.BuilderResults = function(resultsJSON)
{
- this.m_resultsJSON = m_resultsJSON;
-}
+ this.m_resultsJSON = resultsJSON;
+};
-results.BuilderResults.prototype.unexpectedFailures = function() {
+results.BuilderResults.prototype.unexpectedFailures = function()
+{
return base.filterTree(this.m_resultsJSON.tests, isResultNode, isUnexpectedFailure);
-}
+};
+results.unexpectedFailuresByTest = function(resultsByBuilder)
+{
+ unexpectedFailures = {};
+
+ $.each(resultsByBuilder, function(buildName, builderResults) {
+ $.each(builderResults.unexpectedFailures(), function(testName, resultNode) {
+ unexpectedFailures[testName] = unexpectedFailures[testName] || {};
+ unexpectedFailures[testName][buildName] = resultNode;
+ });
+ });
+
+ return unexpectedFailures;
+};
+
function resultsURL(builderName, name)
{
return kTestResultsServer + 'testfile' +
@@ -72,6 +87,20 @@
onsuccess(new results.BuilderResults(data));
}
});
-}
+};
+results.fetchResultsByBuilder = function(builderNameList, onsuccess)
+{
+ var resultsByBuilder = {}
+ var requestsInFlight = builderNameList.length;
+ $.each(builderNameList, function(index, builderName) {
+ results.fetchResultsForBuilder(builderName, function(builderResults) {
+ resultsByBuilder[builderName] = builderResults;
+ --requestsInFlight;
+ if (!requestsInFlight)
+ onsuccess(resultsByBuilder);
+ });
+ });
+};
+
})();
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js (90440 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js 2011-07-06 06:59:56 UTC (rev 90440)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js 2011-07-06 07:04:02 UTC (rev 90441)
@@ -43,3 +43,18 @@
}
});
});
+
+test("unexpectedFailuresByTest", 1, function() {
+ var builderResults = new results.BuilderResults(kExampleResultsJSON);
+ var unexpectedFailuresByTest = results.unexpectedFailuresByTest({
+ "Mock Builder": builderResults
+ });
+ deepEqual(unexpectedFailuresByTest, {
+ "userscripts/another-test.html": {
+ "Mock Builder": {
+ "expected": "PASS",
+ "actual": "TEXT"
+ }
+ }
+ });
+});
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html (90440 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html 2011-07-06 06:59:56 UTC (rev 90440)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html 2011-07-06 07:04:02 UTC (rev 90441)
@@ -15,5 +15,7 @@
<script src=""
<script src=""
<script src=""
+<script src=""
+<script src=""
</body>
</html>
Added: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js (0 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js (rev 0)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js 2011-07-06 07:04:02 UTC (rev 90441)
@@ -0,0 +1,24 @@
+var ui = ui || {};
+
+(function () {
+
+ui.resultsByTest = function(resultsByTest)
+{
+ var block = $('<div class="results"></div>');
+ $.each(resultsByTest, function(testName, resultNodesByBuilder) {
+ var testBlock = $('<div class="test"><div class="testName"></div><div class="builders"></div></div>');
+ block.append(testBlock);
+ $('.testName', testBlock).text(testName);
+ $.each(resultNodesByBuilder, function(builderName, resultNode) {
+ var builderBlock = $('<div class="builder"><div class="builderName"></div><div class="actual"></div><div class="expected"></div></div>');
+ $('.builders', testBlock).append(builderBlock);
+ $('.builderName', builderBlock).text(builderName);
+ $('.actual', builderBlock).text(resultNode.actual);
+ $('.expected', builderBlock).text(resultNode.expected);
+ });
+ });
+
+ return block;
+};
+
+})();
Added: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js (0 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js (rev 0)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js 2011-07-06 07:04:02 UTC (rev 90441)
@@ -0,0 +1,38 @@
+module("iu");
+
+var kExampleResultsByTest = {
+ "scrollbars/custom-scrollbar-with-incomplete-style.html": {
+ "Mock Builder": {
+ "expected": "IMAGE",
+ "actual": "CRASH"
+ },
+ "Mock Linux": {
+ "expected": "TEXT",
+ "actual": "CRASH"
+ }
+ },
+ "userscripts/another-test.html": {
+ "Mock Builder": {
+ "expected": "PASS",
+ "actual": "TEXT"
+ }
+ }
+}
+
+test("BuilderResults.resultsByTest", 1, function() {
+ var resultsByTest = ui.resultsByTest(kExampleResultsByTest);
+ equal(resultsByTest.html(),
+ '<div class="test">' +
+ '<div class="testName">scrollbars/custom-scrollbar-with-incomplete-style.html</div>' +
+ '<div class="builders">' +
+ '<div class="builder"><div class="builderName">Mock Builder</div><div class="actual">CRASH</div><div class="expected">IMAGE</div></div>' +
+ '<div class="builder"><div class="builderName">Mock Linux</div><div class="actual">CRASH</div><div class="expected">TEXT</div></div>' +
+ '</div>' +
+ '</div>' +
+ '<div class="test">' +
+ '<div class="testName">userscripts/another-test.html</div>' +
+ '<div class="builders">' +
+ '<div class="builder"><div class="builderName">Mock Builder</div><div class="actual">TEXT</div><div class="expected">PASS</div></div>' +
+ '</div>' +
+ '</div>');
+});
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py (90440 => 90441)
--- trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py 2011-07-06 06:59:56 UTC (rev 90440)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py 2011-07-06 07:04:02 UTC (rev 90441)
@@ -38,8 +38,10 @@
STATIC_FILE_NAMES = frozenset([
"index.html",
"base.js",
+ "config.js",
"main.js",
"results.js",
+ "ui.js",
])
STATIC_FILE_DIRECTORY = os.path.join(os.path.dirname(__file__), "data", "gardeningserver")