[results feed] Add link to create a GitHub issue to try results
Change-Id: I70096b275c10429391c94c562dcb77e87cd90268
Reviewed-on: https://dart-review.googlesource.com/c/dart_ci/+/132320
Reviewed-by: Jonas Termansen <sortie@google.com>
diff --git a/results_feed/lib/src/components/try_results_component.dart b/results_feed/lib/src/components/try_results_component.dart
index 83140da..0dcf1f1 100644
--- a/results_feed/lib/src/components/try_results_component.dart
+++ b/results_feed/lib/src/components/try_results_component.dart
@@ -62,6 +62,7 @@
.any((change) => change.result != change.expected);
bool get approving => _approving;
+
set approving(bool approve) {
if (approve) {
_tryDataService.logIn().then((_) {
@@ -140,4 +141,33 @@
patchset = patchParam == null ? null : int.parse(patchParam);
tryUpdate();
}
+
+ String githubNewIssueURL() {
+ String title = "Failures on ${reviewInfo.title}";
+ List<Change> failures =
+ changes.where((change) => change.result != change.expected).toList();
+ String body = [
+ "There are new test failures on CL [${reviewInfo.title}]"
+ "(https://dart-review.googlesource.com/c/sdk/+/$review).\n",
+ "The tests",
+ "```",
+ for (final change in failures)
+ "${change.name} ${change.result} (expected ${change.expected})",
+ "```",
+ "are failing on configurations",
+ "```",
+ ...{
+ for (final change in failures)
+ ...change.configurations.configurations
+ },
+ "```"
+ ].join('\n');
+ if (failures.isEmpty) {
+ body = "There are no new test failures on CL [${reviewInfo.title}]"
+ "(https://dart-review.googlesource.com/c/sdk/+/$review).";
+ }
+ final query = {'title': title, 'body': body};
+ return Uri.https("github.com", "dart-lang/sdk/issues/new", query)
+ .toString();
+ }
}
diff --git a/results_feed/lib/src/components/try_results_component.html b/results_feed/lib/src/components/try_results_component.html
index bfd2c2e..b5403fe 100644
--- a/results_feed/lib/src/components/try_results_component.html
+++ b/results_feed/lib/src/components/try_results_component.html
@@ -3,7 +3,6 @@
<a href="http://dart-review.googlesource.com/c/sdk/+/{{review}}/{{patchset}}"
target="_blank">{{reviewInfo.title}}</a>
</h2>
-
<h2 *ngIf="changeGroup.changes.isEmpty">No changed test results</h2>
<results-panel *ngIf="!approving"
[changes]="changeGroup.changes"
@@ -65,6 +64,13 @@
(click)="approve(true)">
Approve
</material-button>
+ <span
+ *ngIf="approveEnabled && !approving"
+ raised>
+ <a href="{{githubNewIssueURL()}}" target="_blank">
+ Create GitHub issue
+ </a>
+ </span>
</div>
</div>
\ No newline at end of file
diff --git a/results_feed/lib/src/services/try_data_service.dart b/results_feed/lib/src/services/try_data_service.dart
index 03ff973..1649503 100644
--- a/results_feed/lib/src/services/try_data_service.dart
+++ b/results_feed/lib/src/services/try_data_service.dart
@@ -45,7 +45,8 @@
..setPatchsets(await _firestoreService.fetchPatchsetInfo(review))
..setBuilds(await _firestoreService.fetchTryBuilds(review));
} else {
- return ReviewInfo(review, "No results received yet for CL $review", []);
+ return ReviewInfo(review, "No results received yet for CL $review", [])
+ ..setBuilds([]);
}
}