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

Unified Diff: lib/src/backend/declarer.dart

Issue 2066113002: Add location information to the JSON reporter. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: cr Created 4 years, 6 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
« no previous file with comments | « json_reporter.schema.json ('k') | lib/src/backend/group.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/backend/declarer.dart
diff --git a/lib/src/backend/declarer.dart b/lib/src/backend/declarer.dart
index 72e4d317a12319cfdcc70a88990ff3d53cdc56d9..6aef7af3839bceeac2fe289e5feea39d5cc82b83 100644
--- a/lib/src/backend/declarer.dart
+++ b/lib/src/backend/declarer.dart
@@ -4,6 +4,8 @@
import 'dart:async';
+import 'package:stack_trace/stack_trace.dart';
+
import '../frontend/timeout.dart';
import '../utils.dart';
import 'group.dart';
@@ -33,6 +35,9 @@ class Declarer {
/// and of the test suite.
final Metadata _metadata;
+ /// The stack trace for this group.
+ final Trace _trace;
+
/// The set-up functions to run for each test in this group.
final _setUps = new List<AsyncFunction>();
@@ -42,9 +47,22 @@ class Declarer {
/// The set-up functions to run once for this group.
final _setUpAlls = new List<AsyncFunction>();
+ /// The trace for the first call to [setUpAll].
+ ///
+ /// All [setUpAll]s are run in a single logical test, so they can only have
+ /// one trace. The first trace is most often correct, since the first
+ /// [setUpAll] is always run and the rest are only run if that one succeeds.
+ Trace _setUpAllTrace;
+
/// The tear-down functions to run once for this group.
final _tearDownAlls = new List<AsyncFunction>();
+ /// The trace for the first call to [tearDownAll].
+ ///
+ /// All [tearDownAll]s are run in a single logical test, so they can only have
+ /// one trace. The first trace matches [_setUpAllTrace].
+ Trace _tearDownAllTrace;
+
/// The children of this group, either tests or sub-groups.
final _entries = new List<GroupEntry>();
@@ -60,9 +78,9 @@ class Declarer {
/// If [metadata] is passed, it's used as the metadata for the implicit root
/// group.
Declarer([Metadata metadata])
- : this._(null, null, metadata == null ? new Metadata() : metadata);
+ : this._(null, null, metadata == null ? new Metadata() : metadata, null);
- Declarer._(this._parent, this._name, this._metadata);
+ Declarer._(this._parent, this._name, this._metadata, this._trace);
/// Runs [body] with this declarer as [Declarer.current].
///
@@ -88,7 +106,7 @@ class Declarer {
await body();
});
await _runTearDowns();
- }));
+ }, trace: new Trace.current(2)));
}
/// Creates a group of tests.
@@ -99,14 +117,15 @@ class Declarer {
var metadata = _metadata.merge(new Metadata.parse(
testOn: testOn, timeout: timeout, skip: skip, onPlatform: onPlatform,
tags: tags));
+ var trace = new Trace.current(2);
// Don't load the tests for a skipped group.
if (metadata.skip) {
- _entries.add(new Group(name, [], metadata: metadata));
+ _entries.add(new Group(name, [], metadata: metadata, trace: trace));
return;
}
- var declarer = new Declarer._(this, _prefix(name), metadata);
+ var declarer = new Declarer._(this, _prefix(name), metadata, trace);
declarer.declare(body);
_entries.add(declarer.build());
}
@@ -129,12 +148,14 @@ class Declarer {
/// Registers a function to be run once before all tests.
void setUpAll(callback()) {
_checkNotBuilt("setUpAll");
+ _setUpAllTrace ??= new Trace.current(2);
_setUpAlls.add(callback);
}
/// Registers a function to be run once after all tests.
void tearDownAll(callback()) {
_checkNotBuilt("tearDownAll");
+ _tearDownAllTrace ??= new Trace.current(2);
_tearDownAlls.add(callback);
}
@@ -145,6 +166,7 @@ class Declarer {
_built = true;
return new Group(_name, _entries.toList(),
metadata: _metadata,
+ trace: _trace,
setUpAll: _setUpAll,
tearDownAll: _tearDownAll);
}
@@ -189,7 +211,7 @@ class Declarer {
return new LocalTest(_prefix("(setUpAll)"), _metadata, () {
return Future.forEach(_setUpAlls, (setUp) => setUp());
- });
+ }, trace: _setUpAllTrace);
}
/// Returns a [Test] that runs the callbacks in [_tearDownAll].
@@ -200,7 +222,7 @@ class Declarer {
return Invoker.current.unclosable(() {
return Future.forEach(_tearDownAlls.reversed, _errorsDontStopTest);
});
- });
+ }, trace: _tearDownAllTrace);
}
/// Runs [body] with special error-handling behavior.
« no previous file with comments | « json_reporter.schema.json ('k') | lib/src/backend/group.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698