Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(754)

Side by Side Diff: Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm.js

Issue 13712005: Move GardeningServer out of BuildSlaveSupport (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26 function FailingTestsBugForm(tester, failingBuildName, passingBuildName, failing Tests) {
27 TestRelatedBugForm.call(this, tester);
28
29 this._failingBuildName = failingBuildName;
30 this._passingBuildName = passingBuildName;
31 this._failingTests = failingTests;
32
33 this.description = this._createBugDescription();
34 // FIXME: When a newly-added test has been failing since its introduction, i t isn't really a
35 // "regression". We should use different keywords in that case. <http://webk it.org/b/61645>
36 this.keywords += ', ' + WebKitBugzilla.Keyword.Regression;
37 this.title = this._createBugTitle();
38 this.url = this._failingResultsHTMLURL();
39 }
40
41 FailingTestsBugForm.prototype = {
42 _createBugDescription: function() {
43 var firstSuspectRevision = this._passingRevision() ? this._passingRevisi on() + 1 : this._failingRevision();
44 var lastSuspectRevision = this._failingRevision();
45
46 var endOfFirstSentence;
47 if (this._passingBuildName) {
48 endOfFirstSentence = 'started failing on ' + this._tester.name;
49 if (firstSuspectRevision === lastSuspectRevision)
50 endOfFirstSentence += ' in r' + firstSuspectRevision + ' <' + tr ac.changesetURL(firstSuspectRevision) + '>';
51 else
52 endOfFirstSentence += ' between r' + firstSuspectRevision + ' an d r' + lastSuspectRevision + ' (inclusive)';
53 } else
54 endOfFirstSentence = (this._failingTests.length === 1 ? 'has' : 'hav e') + ' been failing on ' + this._tester.name + ' since at least r' + firstSuspe ctRevision + ' <' + trac.changesetURL(firstSuspectRevision) + '>';
55 var description;
56 if (this._failingTests.length === 1)
57 description = this._failingTests[0] + ' ' + endOfFirstSentence + '.\ n\n';
58 else if (this._failingTests.length === 2)
59 description = this._failingTests.join(' and ') + ' ' + endOfFirstSen tence + '.\n\n';
60 else {
61 description = 'The following tests ' + endOfFirstSentence + ':\n\n'
62 + this._failingTests.map(function(test) { return ' ' + test } ).join('\n')
63 + '\n\n';
64 }
65 if (firstSuspectRevision !== lastSuspectRevision)
66 description += trac.logURL('trunk', firstSuspectRevision, lastSuspec tRevision) + '\n\n';
67 if (this._passingBuildName)
68 description += this._tester.resultsPageURL(this._passingBuildName) + ' passed\n';
69 description += this._failingResultsHTMLURL() + ' failed\n';
70
71 return description;
72 },
73
74 _createBugTitle: function() {
75 // FIXME: When a newly-added test has been failing since its introductio n, it isn't really a
76 // "regression". We should use a different title in that case. <http://w ebkit.org/b/61645>
77
78 var titlePrefix = 'REGRESSION (' + this._regressionRangeString() + '): ' ;
79 var titleSuffix = ' failing on ' + this._tester.name;
80 var title = titlePrefix + this._failingTests.join(', ') + titleSuffix;
81
82 if (title.length <= bugzilla.kMaximumBugTitleLength)
83 return title;
84
85 var pathPrefix = longestCommonPathPrefix(this._failingTests);
86 if (pathPrefix) {
87 title = titlePrefix + this._failingTests.length + ' ' + pathPrefix + ' tests' + titleSuffix;
88 if (title.length <= bugzilla.kMaximumBugTitleLength)
89 return title;
90 }
91
92 title = titlePrefix + this._failingTests.length + ' tests' + titleSuffix ;
93
94 console.assert(title.length <= bugzilla.kMaximumBugTitleLength);
95 return title;
96 },
97
98 _failingResultsHTMLURL: function() {
99 return this._tester.resultsPageURL(this._failingBuildName);
100 },
101
102 _failingRevision: function() {
103 return this._tester.buildbot.parseBuildName(this._failingBuildName).revi sion;
104 },
105
106 _passingRevision: function() {
107 if (!this._passingBuildName)
108 return null;
109 return this._tester.buildbot.parseBuildName(this._passingBuildName).revi sion;
110 },
111
112 _regressionRangeString: function() {
113 var failingRevision = this._failingRevision();
114 var passingRevision = this._passingRevision();
115 if (!passingRevision || failingRevision - passingRevision <= 1)
116 return 'r' + failingRevision;
117 return 'r' + passingRevision + '-r' + failingRevision;
118 },
119 };
120
121 FailingTestsBugForm.prototype.__proto__ = TestRelatedBugForm.prototype;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698