| OLD | NEW |
| (Empty) |
| 1 <!-- | |
| 2 Copyright 2014 The Chromium Authors. All rights reserved. | |
| 3 Use of this source code is governed by a BSD-style license that can be | |
| 4 found in the LICENSE file. | |
| 5 --> | |
| 6 | |
| 7 <link rel="import" href="ct-builder-list.html"> | |
| 8 <link rel="import" href="ct-commit-list.html"> | |
| 9 | |
| 10 <script> | |
| 11 function CTStepFailureGroupData(failures, commitList) { | |
| 12 this.failures = failures; | |
| 13 this.key = failures.map(function(failure) { | |
| 14 return failure.key; | |
| 15 }).join('::'); | |
| 16 this.commitList = commitList; | |
| 17 this.builderList = new CTBuilderList(failures); | |
| 18 this.category = 'step'; | |
| 19 }; | |
| 20 | |
| 21 CTStepFailureGroupData.prototype.getAnnotations = function() { | |
| 22 return this.failures.map(function(failure) { | |
| 23 return failure.annotations(); | |
| 24 }).flatten(); | |
| 25 }; | |
| 26 | |
| 27 CTStepFailureGroupData.prototype.failureKeys = function() { | |
| 28 return this.failures.map(function(failure) { | |
| 29 return failure.keys(); | |
| 30 }).flatten(); | |
| 31 }; | |
| 32 | |
| 33 CTStepFailureGroupData.prototype.isTreeCloser = function() { | |
| 34 return this.failures.any(function(failure) { | |
| 35 return failure.isTreeCloser(); | |
| 36 }); | |
| 37 }; | |
| 38 | |
| 39 CTStepFailureGroupData.prototype.failedOnce = function() { | |
| 40 if (!this.failures.length) | |
| 41 return false; | |
| 42 | |
| 43 for (var i = 0; i < this.failures.length; i++) { | |
| 44 var totalFailures = 0; | |
| 45 var resultNodes = this.failures[i].resultNodesByBuilder; | |
| 46 for (var r in resultNodes) { | |
| 47 totalFailures += resultNodes[r].failingBuildCount; | |
| 48 if (totalFailures > 1) | |
| 49 return false; | |
| 50 } | |
| 51 } | |
| 52 return true; | |
| 53 }; | |
| 54 | |
| 55 CTStepFailureGroupData.prototype.fileBugMessage = function() { | |
| 56 var message = ''; | |
| 57 this.failures.forEach(function(failure) { | |
| 58 message += failure.step; | |
| 59 if (failure.testName) { | |
| 60 message += ' ' + failure.testName + '\n'; | |
| 61 message += failure.flakinessDashboardURL(this.tree); | |
| 62 } | |
| 63 message += '\n'; | |
| 64 }); | |
| 65 message += '\nRevision range:\n'; | |
| 66 this.commitList.repositories.forEach(function(repository) { | |
| 67 message += repository.name + ' ' + repository.range + '\n'; | |
| 68 }); | |
| 69 message += '\nFailing builders:\n'; | |
| 70 this.builderList.builders.forEach(function(builder) { | |
| 71 message += builder.builder + ': ' + builder.buildUrl + '\n'; | |
| 72 }); | |
| 73 | |
| 74 return message; | |
| 75 }; | |
| 76 | |
| 77 CTStepFailureGroupData.prototype.fileBugLink = function() { | |
| 78 var fileBugUrl = 'https://code.google.com/p/chromium/issues/entry?' + | |
| 79 'status=Available&labels=Pri-2,gardening-blink&' + | |
| 80 'summary=Build%20failure&comment=Build%20is%20broken:%0a'; | |
| 81 return fileBugUrl + encodeURIComponent(this.fileBugMessage()); | |
| 82 }; | |
| 83 </script> | |
| OLD | NEW |