| Index: tools/gardening/lib/src/compare_failures_impl.dart
|
| diff --git a/tools/gardening/lib/src/compare_failures_impl.dart b/tools/gardening/lib/src/compare_failures_impl.dart
|
| index 407fd371ef711aa8354030fe1a38908a05459835..1b4adc55e02fb2cb2f63ca1aad4784a5496ae91b 100644
|
| --- a/tools/gardening/lib/src/compare_failures_impl.dart
|
| +++ b/tools/gardening/lib/src/compare_failures_impl.dart
|
| @@ -64,11 +64,11 @@ void printBuildResultsSummary(
|
| if (LOG || emptySummaries.length < 3) {
|
| if (emptySummaries.length == 1) {
|
| sb.writeln('No errors found for build bot:');
|
| - sb.write(emptySummaries.single.buildUri);
|
| + sb.write(emptySummaries.single.name);
|
| } else {
|
| sb.writeln('No errors found for any of these build bots:');
|
| for (Summary summary in emptySummaries) {
|
| - sb.writeln('${summary.buildUri}');
|
| + sb.writeln('${summary.name}');
|
| }
|
| }
|
| } else {
|
| @@ -86,7 +86,7 @@ void printBuildResultsSummary(
|
| if (LOG || emptySummaries.length < 3) {
|
| sb.writeln('No errors found for the remaining build bots:');
|
| for (Summary summary in emptySummaries) {
|
| - sb.writeln('${summary.buildUri}');
|
| + sb.writeln('${summary.name}');
|
| }
|
| } else {
|
| sb.write(
|
| @@ -103,6 +103,10 @@ Future<List<BuildResult>> readBuildResults(
|
| BuildbotClient client, BuildUri buildUri, int runCount) async {
|
| List<BuildResult> summaries = <BuildResult>[];
|
| BuildResult summary = await client.readResult(buildUri);
|
| + if (summary == null) {
|
| + print('No result found for $buildUri');
|
| + return summaries;
|
| + }
|
| summaries.add(summary);
|
| if (summary.hasFailures) {
|
| for (int i = 0; i < runCount; i++) {
|
| @@ -145,7 +149,7 @@ class Summary {
|
| timing.step.stepName] = timing;
|
| }
|
| }
|
| - sb.write('Timeouts for ${buildUri} :\n');
|
| + sb.write('Timeouts for ${name} :\n');
|
| map.forEach(
|
| (TestConfiguration id, Map<int, Map<String, Timing>> timings) {
|
| if (!timeoutIds.contains(id)) return;
|
| @@ -178,7 +182,7 @@ class Summary {
|
| failure.uri.buildNumber] = failure;
|
| }
|
| }
|
| - sb.write('Errors for ${buildUri} :\n');
|
| + sb.write('Errors for ${name} :\n');
|
| // TODO(johnniwinther): Improve comparison of non-timeouts.
|
| map.forEach((TestConfiguration id, Map<int, TestFailure> failures) {
|
| if (!errorIds.contains(id)) return;
|
| @@ -202,7 +206,13 @@ class Summary {
|
| });
|
| }
|
| if (timeoutIds.isEmpty && errorIds.isEmpty) {
|
| - sb.write('No errors found for ${buildUri}');
|
| + sb.write('No errors found for ${name}');
|
| }
|
| }
|
| +
|
| + String get name => results.isNotEmpty
|
| + // Use the first result as name since it most likely has an absolute build
|
| + // number.
|
| + ? results.first.buildUri.toString()
|
| + : buildUri.toString();
|
| }
|
|
|