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

Unified Diff: lib/src/runner/reporter/json.dart

Issue 1637193003: Add suite information to the JSON reporter. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: fix changelog Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: lib/src/runner/reporter/json.dart
diff --git a/lib/src/runner/reporter/json.dart b/lib/src/runner/reporter/json.dart
index 966380d533d5a932f9752068f874cb0d5652e60f..8f29bc6897900a4c16d3fa304a497473941364b6 100644
--- a/lib/src/runner/reporter/json.dart
+++ b/lib/src/runner/reporter/json.dart
@@ -8,6 +8,7 @@ import 'dart:convert';
import '../../backend/group.dart';
import '../../backend/live_test.dart';
import '../../backend/metadata.dart';
+import '../../backend/suite.dart';
import '../../frontend/expect.dart';
import '../../utils.dart';
import '../engine.dart';
@@ -41,6 +42,9 @@ class JsonReporter implements Reporter {
/// An expando that associates unique IDs with [LiveTest]s.
final _liveTestIDs = new Map<LiveTest, int>();
+ /// An expando that associates unique IDs with [Suite]s.
+ final _suiteIDs = new Map<Suite, int>();
+
/// An expando that associates unique IDs with [Group]s.
final _groupIDs = new Map<Group, int>();
@@ -104,11 +108,13 @@ class JsonReporter implements Reporter {
_stopwatch.start();
}
+ var suiteID = _idForSuite(liveTest.suite);
+
// Don't emit groups for load suites. They're always empty and they provide
// unnecessary clutter.
var groupIDs = liveTest.suite is LoadSuite
? []
- : _idsForGroups(liveTest.groups);
+ : _idsForGroups(liveTest.groups, suiteID);
var id = _nextID++;
_liveTestIDs[liveTest] = id;
@@ -116,6 +122,7 @@ class JsonReporter implements Reporter {
"test": {
"id": id,
"name": liveTest.test.name,
+ "suiteID": suiteID,
"groupIDs": groupIDs,
"metadata": _serializeMetadata(liveTest.test.metadata)
}
@@ -137,11 +144,40 @@ class JsonReporter implements Reporter {
}));
}
- /// Returns a list of the IDs for all the groups in [groups].
+ /// Returns an ID for [suite].
+ ///
+ /// If [suite] doesn't have an ID yet, this assigns one and emits a new event
+ /// for that suite.
+ int _idForSuite(Suite suite) {
+ if (_suiteIDs.containsKey(suite)) return _suiteIDs[suite];
+
+ var id = _nextID++;
+ _suiteIDs[suite] = id;
+
+ // Give the load suite's suite the same ID, because it doesn't have any
+ // different metadata.
+ if (suite is LoadSuite) {
+ suite.suite.then((runnerSuite) {
+ if (runnerSuite != null) _suiteIDs[runnerSuite] = id;
+ });
+ }
+
+ _emit("suite", {
+ "suite": {
+ "id": id,
+ "platform": suite.platform?.identifier,
+ "path": suite.path
+ }
+ });
+ return id;
+ }
+
+ /// Returns a list of the IDs for all the groups in [groups], which are
+ /// contained in the suite identified by [suiteID].
///
/// If a group doesn't have an ID yet, this assigns one and emits a new event
/// for that group.
- List<int> _idsForGroups(Iterable<Group> groups) {
+ List<int> _idsForGroups(Iterable<Group> groups, int suiteID) {
var parentID;
return groups.map((group) {
if (_groupIDs.containsKey(group)) {
@@ -155,6 +191,7 @@ class JsonReporter implements Reporter {
_emit("group", {
"group": {
"id": id,
+ "suiteID": suiteID,
"parentID": parentID,
"name": group.name,
"metadata": _serializeMetadata(group.metadata)
« json_reporter.md ('K') | « lib/src/runner/reporter/expanded.dart ('k') | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698