Diff
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js 2011-07-22 00:29:31 UTC (rev 91538)
@@ -23,10 +23,9 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-function FailingTestsBugForm(bugzilla, trac, tester, failingBuildName, passingBuildName, failingTests) {
+function FailingTestsBugForm(bugzilla, tester, failingBuildName, passingBuildName, failingTests) {
TestRelatedBugForm.call(this, bugzilla, tester);
- this._trac = trac;
this._failingBuildName = failingBuildName;
this._passingBuildName = passingBuildName;
this._failingTests = failingTests;
@@ -48,11 +47,11 @@
if (this._passingBuildName) {
endOfFirstSentence = 'started failing on ' + this._tester.name;
if (firstSuspectRevision === lastSuspectRevision)
- endOfFirstSentence += ' in r' + firstSuspectRevision + ' <' + this._trac.changesetURL(firstSuspectRevision) + '>';
+ endOfFirstSentence += ' in r' + firstSuspectRevision + ' <' + trac.changesetURL(firstSuspectRevision) + '>';
else
endOfFirstSentence += ' between r' + firstSuspectRevision + ' and r' + lastSuspectRevision + ' (inclusive)';
} else
- endOfFirstSentence = (this._failingTests.length === 1 ? 'has' : 'have') + ' been failing on ' + this._tester.name + ' since at least r' + firstSuspectRevision + ' <' + this._trac.changesetURL(firstSuspectRevision) + '>';
+ endOfFirstSentence = (this._failingTests.length === 1 ? 'has' : 'have') + ' been failing on ' + this._tester.name + ' since at least r' + firstSuspectRevision + ' <' + trac.changesetURL(firstSuspectRevision) + '>';
var description;
if (this._failingTests.length === 1)
description = this._failingTests[0] + ' ' + endOfFirstSentence + '.\n\n';
@@ -64,7 +63,7 @@
+ '\n\n';
}
if (firstSuspectRevision !== lastSuspectRevision)
- description += this._trac.logURL('trunk', firstSuspectRevision, lastSuspectRevision) + '\n\n';
+ description += trac.logURL('trunk', firstSuspectRevision, lastSuspectRevision) + '\n\n';
if (this._passingBuildName)
description += this._tester.resultsPageURL(this._passingBuildName) + ' passed\n';
description += this._failingResultsHTMLURL() + ' failed\n';
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js 2011-07-22 00:29:31 UTC (rev 91538)
@@ -31,14 +31,6 @@
var mockBugzilla = {};
mockBugzilla.baseURL = '[BUGZILLA BASE URL]';
- var mockTrac = {};
- mockTrac.changesetURL = function(revisionNumber) {
- return '[CHANGESET URL r' + revisionNumber + ']';
- }
- mockTrac.logURL = function(path, startRevision, endRevision) {
- return '[LOG URL ' + path + ', r' + startRevision + ', r' + endRevision + ']';
- }
-
var mockBuildbot = {};
mockBuildbot.parseBuildName = function(buildName) {
var match = /(\d+)/.exec(buildName);
@@ -55,7 +47,7 @@
return '[RESULTS PAGE URL ' + this.name + ', ' + buildName + ']';
}
- return new FailingTestsBugForm(mockBugzilla, mockTrac, mockBuilder, failingBuildName, passingBuildName, failingTests);
+ return new FailingTestsBugForm(mockBugzilla, mockBuilder, failingBuildName, passingBuildName, failingTests);
}
test('keywords are set', 1, function() {
@@ -70,7 +62,7 @@
failingTests: [
'css1/basic/class_as_selector.html',
],
- expectedDescription: 'css1/basic/class_as_selector.html has been failing on Windows 7 Release (Tests) since at least r10 <[CHANGESET URL r10]>.\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
+ expectedDescription: 'css1/basic/class_as_selector.html has been failing on Windows 7 Release (Tests) since at least r10 <http://trac.webkit.org/changeset/10>.\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
expectedTitle: 'REGRESSION (r10): css1/basic/class_as_selector.html failing on Windows 7 Release (Tests)',
},
{
@@ -79,7 +71,7 @@
failingTests: [
'css1/basic/class_as_selector.html',
],
- expectedDescription: 'css1/basic/class_as_selector.html started failing on Windows 7 Release (Tests) in r10 <[CHANGESET URL r10]>.\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r9 (3)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
+ expectedDescription: 'css1/basic/class_as_selector.html started failing on Windows 7 Release (Tests) in r10 <http://trac.webkit.org/changeset/10>.\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r9 (3)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
expectedTitle: 'REGRESSION (r10): css1/basic/class_as_selector.html failing on Windows 7 Release (Tests)',
},
{
@@ -88,7 +80,7 @@
failingTests: [
'css1/basic/class_as_selector.html',
],
- expectedDescription: 'css1/basic/class_as_selector.html started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive).\n\n[LOG URL trunk, r9, r10]\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
+ expectedDescription: 'css1/basic/class_as_selector.html started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive).\n\nhttp://trac.webkit.org/log/trunk?rev=10&stop_rev=9\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
expectedTitle: 'REGRESSION (r8-r10): css1/basic/class_as_selector.html failing on Windows 7 Release (Tests)',
},
{
@@ -98,7 +90,7 @@
'css1/basic/class_as_selector.html',
'fast/css/ex-after-font-variant.html',
],
- expectedDescription: 'css1/basic/class_as_selector.html and fast/css/ex-after-font-variant.html started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive).\n\n[LOG URL trunk, r9, r10]\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
+ expectedDescription: 'css1/basic/class_as_selector.html and fast/css/ex-after-font-variant.html started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive).\n\nhttp://trac.webkit.org/log/trunk?rev=10&stop_rev=9\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
expectedTitle: 'REGRESSION (r8-r10): css1/basic/class_as_selector.html, fast/css/ex-after-font-variant.html failing on Windows 7 Release (Tests)',
},
{
@@ -114,7 +106,7 @@
'css1/basic/class_as_selector7.html',
'css1/basic/class_as_selector8.html',
],
- expectedDescription: 'The following tests started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive):\n\n css1/basic/class_as_selector1.html\n css1/basic/class_as_selector2.html\n css1/basic/class_as_selector3.html\n css1/basic/class_as_selector4.html\n css1/basic/class_as_selector5.html\n css1/basic/class_as_selector6.html\n css1/basic/class_as_selector7.html\n css1/basic/class_as_selector8.html\n\n[LOG URL trunk, r9, r10]\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
+ expectedDescription: 'The following tests started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive):\n\n css1/basic/class_as_selector1.html\n css1/basic/class_as_selector2.html\n css1/basic/class_as_selector3.html\n css1/basic/class_as_selector4.html\n css1/basic/class_as_selector5.html\n css1/basic/class_as_selector6.html\n css1/basic/class_as_selector7.html\n css1/basic/class_as_selector8.html\n\nhttp://trac.webkit.org/log/trunk?rev=10&stop_rev=9\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
expectedTitle: 'REGRESSION (r8-r10): 8 css1/basic tests failing on Windows 7 Release (Tests)',
},
{
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js 2011-07-22 00:29:31 UTC (rev 91538)
@@ -23,79 +23,69 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-function Trac(baseURL) {
- this.baseURL = baseURL;
- this._cache = {};
-}
+var trac = trac || {};
-Trac.prototype = {
- changesetURL: function(revision) {
- return this.baseURL + 'changeset/' + revision;
- },
+(function() {
- getCommitDataForRevisionRange: function(path, startRevision, endRevision, callback) {
- // FIXME: We could try to be smarter and cache individual commits, but in practice we just
- // get called with the same parameters over and over.
- var cacheKey = 'getCommitDataForRevisionRange.' + [path, startRevision, endRevision].join('.');
- if (cacheKey in this._cache) {
- callback(this._cache[cacheKey]);
- return;
- }
+function parseCommitData(responseXML)
+{
+ var commits = Array.prototype.map.call(responseXML.getElementsByTagName('item'), function(item) {
+ var title = item.getElementsByTagName('title')[0].textContent;
+ var revision = parseInt(/^Revision (\d+):/.exec(title)[1], 10);
- var callbacksCacheKey = 'callbacks.' + cacheKey;
- if (callbacksCacheKey in this._cache) {
- this._cache[callbacksCacheKey].push(callback);
- return;
- }
+ var container = document.createElement('div');
+ container.innerHTML = item.getElementsByTagName('description')[0].textContent;
- this._cache[callbacksCacheKey] = [callback];
+ return {
+ revision: revision,
+ title: title,
+ // FIXME: This isn't a very high-fidelity reproduction of the commit message,
+ // but it's good enough for our purposes.
+ message: container.innerText,
+ };
+ });
- var self = this;
+ return commits;
+}
- function cacheResultsAndCallCallbacks(commits) {
- self._cache[cacheKey] = commits;
+var g_cache = new base.AsynchronousCache(function(key, callback) {
+ var explodedKey = key.split('\n');
- var callbacks = self._cache[callbacksCacheKey];
- delete self._cache[callbacksCacheKey];
+ var path = explodedKey[0];
+ var startRevision = explodedKey[1];
+ var endRevision = explodedKey[2];
- callbacks.forEach(function(callback) {
- callback(commits);
- });
- }
+ var url = "" startRevision, endRevision, true, true);
- getResource(self.logURL('trunk', startRevision, endRevision, true, true), function(xhr) {
- var commits = Array.prototype.map.call(xhr.responseXML.getElementsByTagName('item'), function(item) {
- var title = item.getElementsByTagName('title')[0].textContent;
- var revision = parseInt(/^Revision (\d+):/.exec(title)[1], 10);
+ $.get(url, function(commitData) {
+ callback(parseCommitData(commitData));
+ });
+});
- var container = document.createElement('div');
- container.innerHTML = item.getElementsByTagName('description')[0].textContent;
+trac.changesetURL = function(revision)
+{
+ return config.kTracURL + '/changeset/' + revision;
+};
- return {
- revision: revision,
- title: title,
- // FIXME: This isn't a very high-fidelity reproduction of the commit message,
- // but it's good enough for our purposes.
- message: container.innerText,
- };
- });
+trac.logURL = function(path, startRevision, endRevision, showFullCommitLogs, formatAsRSS)
+{
+ var queryParameters = {
+ rev: endRevision,
+ stop_rev: startRevision,
+ };
- cacheResultsAndCallCallbacks(commits);
- },
- function(xhr) {
- cacheResultsAndCallCallbacks([]);
- });
- },
+ if (showFullCommitLogs)
+ queryParameters.verbose = 'on';
+ if (formatAsRSS)
+ queryParameters.format = 'rss';
- logURL: function(path, startRevision, endRevision, showFullCommitLogs, formatAsRSS) {
- var queryParameters = {
- rev: endRevision,
- stop_rev: startRevision,
- };
- if (showFullCommitLogs)
- queryParameters.verbose = 'on';
- if (formatAsRSS)
- queryParameters.format = 'rss';
- return addQueryParametersToURL(this.baseURL + 'log/' + path, queryParameters);
- },
+ return config.kTracURL + '/log/' + path + '?' + $.param(queryParameters);
};
+
+trac.commitDataForRevisionRange = function(path, startRevision, endRevision, callback)
+{
+ var key = [path, startRevision, endRevision].join('\n');
+ g_cache.get(key, callback);
+};
+
+})();
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js 2011-07-22 00:29:31 UTC (rev 91538)
@@ -23,10 +23,9 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-function ViewController(buildbot, bugzilla, trac) {
+function ViewController(buildbot, bugzilla) {
this._buildbot = buildbot;
this._bugzilla = bugzilla;
- this._trac = trac;
this._navigationID = 0;
var self = this;
@@ -104,7 +103,7 @@
item.appendChild(self._domForRegressionRange(builder, buildName, passingBuildName, failingTestNames));
if (passingBuildName || !stillFetchingData) {
- var bugForm = new FailingTestsBugForm(self._bugzilla, self._trac, builder, buildName, passingBuildName, failingTestNames);
+ var bugForm = new FailingTestsBugForm(self._bugzilla, builder, buildName, passingBuildName, failingTestNames);
item.appendChild(self._domForNewAndExistingBugs(builder, failingTestNames, bugForm))
}
});
@@ -198,14 +197,14 @@
var link = document.createElement('a');
result.appendChild(link);
- link.href = "" firstSuspectRevision, lastSuspectRevision, true);
+ link.href = "" firstSuspectRevision, lastSuspectRevision, true);
link.appendChild(document.createTextNode('View regression range in Trac'));
suspectsContainer.appendChild(document.createTextNode('Searching for suspect revisions\u2026'));
// FIXME: Maybe some of this code should go in LayoutTestHistoryAnalyzer, or some other class?
var self = this;
- self._trac.getCommitDataForRevisionRange('trunk', firstSuspectRevision, lastSuspectRevision, function(commits) {
+ trac.getCommitDataForRevisionRange('trunk', firstSuspectRevision, lastSuspectRevision, function(commits) {
var failingTestNamesWithoutExtensions = failingTestNames.map(removePathExtension);
var suspectCommits = commits.filter(function(commit) {
return failingTestNamesWithoutExtensions.some(function(testName) {
@@ -234,7 +233,7 @@
var link = document.createElement('a');
item.appendChild(link);
- link.href = ""
+ link.href = ""
link.appendChild(document.createTextNode(commit.title))
return item;
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js 2011-07-22 00:29:31 UTC (rev 91538)
@@ -146,4 +146,40 @@
this._callback.apply(null, args);
};
+base.AsynchronousCache = function(fetch)
+{
+ this._fetch = fetch;
+ this._dataCache = {};
+ this._callbackCache = {};
+};
+
+base.AsynchronousCache.prototype.get = function(key, callback)
+{
+ var self = this;
+
+ if (self._dataCache[key]) {
+ // FIXME: Consider always calling callback asynchronously.
+ callback(self._dataCache[key]);
+ return;
+ }
+
+ if (key in self._callbackCache) {
+ self._callbackCache[key].push(callback);
+ return;
+ }
+
+ self._callbackCache[key] = [callback];
+
+ self._fetch.call(null, key, function(data) {
+ self._dataCache[key] = data;
+
+ var callbackList = self._callbackCache[key];
+ delete self._callbackCache[key];
+
+ callbackList.forEach(function(cachedCallback) {
+ cachedCallback(data);
+ });
+ });
+};
+
})();
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js 2011-07-22 00:29:31 UTC (rev 91538)
@@ -29,6 +29,8 @@
'Mac Clang Builder (dbg)',
];
+config.kTracURL = 'http://trac.webkit.org';
+
config.kTestNameAttr = 'data-test-name';
config.kBuilderNameAttr = 'data-builder-name';
config.kFailureCountAttr = 'data-failure-count';
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html 2011-07-22 00:29:31 UTC (rev 91538)
@@ -27,6 +27,12 @@
<html>
<head>
<link rel="stylesheet" href=""
+ <script src=""
+
+ <script src=""
+ <script src=""
+ <script src=""
+
<script src=""
<script src=""
<script src=""
@@ -42,12 +48,11 @@
<script src=""
<script src=""
<script src=""
- <script src=""
<script src=""
<script src=""
<script src=""
<script>
- var viewController = new ViewController(new WebKitBuildbot(), new Bugzilla('https://bugs.webkit.org/'), new Trac('http://trac.webkit.org/'));
+ var viewController = new ViewController(new WebKitBuildbot(), new Bugzilla('https://bugs.webkit.org/'));
</script>
</head>
<body>
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js 2011-07-22 00:29:31 UTC (rev 91538)
@@ -157,35 +157,10 @@
return kTestResultsQuery + $.param(parameters);
}
-function ResultsCache()
-{
- this._cache = {};
-}
+var g_resultsCache = new base.AsynchronousCache(function(key, callback) {
+ base.jsonp(kTestResultsServer + 'testfile?key=' + key, callback);
+});
-ResultsCache.prototype._fetch = function(key, callback)
-{
- var self = this;
-
- var url = "" + 'testfile?key=' + key;
- base.jsonp(url, function (resultsTree) {
- self._cache[key] = resultsTree;
- callback(resultsTree);
- });
-};
-
-// Warning! This function can call callback either synchronously or asynchronously.
-// FIXME: Consider using setTimeout to make this method always asynchronous.
-ResultsCache.prototype.get = function(key, callback)
-{
- if (this._cache[key]) {
- callback(this._cache[key]);
- return;
- }
- this._fetch(key, callback);
-};
-
-var g_resultsCache = new ResultsCache();
-
function anyIsFailure(resultsList)
{
return $.grep(resultsList, isFailure).length > 0;
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html (91537 => 91538)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html 2011-07-22 00:29:31 UTC (rev 91538)
@@ -11,6 +11,19 @@
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
+
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+
<!-- FIXME: We should have tests for these files! -->
<script src=""
<script src=""
@@ -39,14 +52,5 @@
<script src=""
<script src=""
-<script src=""
-<script src=""
-<script src=""
-<script src=""
-<script src=""
-<script src=""
-<script src=""
-<script src=""
-<script src=""
</body>
</html>
Modified: trunk/Tools/ChangeLog (91537 => 91538)
--- trunk/Tools/ChangeLog 2011-07-22 00:23:39 UTC (rev 91537)
+++ trunk/Tools/ChangeLog 2011-07-22 00:29:31 UTC (rev 91538)
@@ -1,3 +1,30 @@
+2011-07-21 Adam Barth <[email protected]>
+
+ Refactor Trac.js for use in garden-o-matic
+ https://bugs.webkit.org/show_bug.cgi?id=64998
+
+ Reviewed by Adam Roben.
+
+ This patch refactors Trac.js to match the architecture and style of
+ garden-o-matic. I've also factored AsynchronousCache out of Trac (and
+ moved it to base) because it was redundant with some other code we
+ already had.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js:
+ (FailingTestsBugForm):
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
+ (ViewController.prototype._displayBuilder.start):
+ (ViewController.prototype._displayBuilder):
+ (ViewController.prototype._domForRegressionRange.trac.getCommitDataForRevisionRange):
+ (ViewController.prototype._domForRegressionRange):
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
+
2011-07-21 Ojan Vafai <[email protected]>
Fix issue throwing a 500 to the bots. We were modifying