Index: test/runner/json_reporter_test.dart |
diff --git a/test/runner/json_reporter_test.dart b/test/runner/json_reporter_test.dart |
index 401014d12b40c285bfca3545462e26a3474a810a..48b60e477df1a0d0ef629e5bf20957af9d84e07a 100644 |
--- a/test/runner/json_reporter_test.dart |
+++ b/test/runner/json_reporter_test.dart |
@@ -6,6 +6,7 @@ |
import 'dart:convert'; |
+import 'package:path/path.dart' as p; |
import 'package:scheduled_test/descriptor.dart' as d; |
import 'package:scheduled_test/scheduled_stream.dart'; |
import 'package:scheduled_test/scheduled_test.dart'; |
@@ -36,11 +37,11 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 3), |
- _testStart(3, "success 1"), |
+ _testStart(3, "success 1", line: 6, column: 7), |
_testDone(3), |
- _testStart(4, "success 2"), |
+ _testStart(4, "success 2", line: 7, column: 7), |
_testDone(4), |
- _testStart(5, "success 3"), |
+ _testStart(5, "success 3", line: 8, column: 7), |
_testDone(5), |
_done() |
]); |
@@ -58,13 +59,13 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 3), |
- _testStart(3, "failure 1"), |
+ _testStart(3, "failure 1", line: 6, column: 7), |
_error(3, "oh no", isFailure: true), |
_testDone(3, result: "failure"), |
- _testStart(4, "failure 2"), |
+ _testStart(4, "failure 2", line: 7, column: 7), |
_error(4, "oh no", isFailure: true), |
_testDone(4, result: "failure"), |
- _testStart(5, "failure 3"), |
+ _testStart(5, "failure 3", line: 8, column: 7), |
_error(5, "oh no", isFailure: true), |
_testDone(5, result: "failure"), |
_done(success: false) |
@@ -100,15 +101,15 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 4), |
- _testStart(3, "failure 1"), |
+ _testStart(3, "failure 1", line: 6, column: 7), |
_error(3, "oh no", isFailure: true), |
_testDone(3, result: "failure"), |
- _testStart(4, "success 1"), |
+ _testStart(4, "success 1", line: 7, column: 7), |
_testDone(4), |
- _testStart(5, "failure 2"), |
+ _testStart(5, "failure 2", line: 8, column: 7), |
_error(5, "oh no", isFailure: true), |
_testDone(5, result: "failure"), |
- _testStart(6, "success 2"), |
+ _testStart(6, "success 2", line: 9, column: 7), |
_testDone(6), |
_done(success: false) |
]); |
@@ -133,12 +134,12 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 2), |
- _testStart(3, "failures"), |
+ _testStart(3, "failures", line: 9, column: 7), |
_error(3, "first error"), |
_error(3, "second error"), |
_error(3, "third error"), |
_testDone(3, result: "error"), |
- _testStart(4, "wait"), |
+ _testStart(4, "wait", line: 15, column: 7), |
_testDone(4), |
_done(success: false) |
]); |
@@ -168,9 +169,9 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 2), |
- _testStart(3, "failure"), |
+ _testStart(3, "failure", line: 11, column: 7), |
_testDone(3), |
- _testStart(4, "wait"), |
+ _testStart(4, "wait", line: 17, column: 7), |
_error(3, "oh no"), |
_error(3, |
"This test failed after it had already completed. Make sure to " |
@@ -200,14 +201,16 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 3), |
- _group(3, name: "group 1", parentID: 2, testCount: 3), |
- _group(4, name: "group 1 .2", parentID: 3), |
- _group(5, name: "group 1 .2 .3", parentID: 4), |
- _testStart(6, 'group 1 .2 .3 success', groupIDs: [2, 3, 4, 5]), |
+ _group(3, |
+ name: "group 1", parentID: 2, testCount: 3, line: 6, column: 7), |
+ _group(4, name: "group 1 .2", parentID: 3, line: 7, column: 9), |
+ _group(5, name: "group 1 .2 .3", parentID: 4, line: 8, column: 11), |
+ _testStart(6, 'group 1 .2 .3 success', |
+ groupIDs: [2, 3, 4, 5], line: 9, column: 13), |
_testDone(6), |
- _testStart(7, 'group 1 success', groupIDs: [2, 3]), |
+ _testStart(7, 'group 1 success', groupIDs: [2, 3], line: 13, column: 9), |
_testDone(7), |
- _testStart(8, 'group 1 success', groupIDs: [2, 3]), |
+ _testStart(8, 'group 1 success', groupIDs: [2, 3], line: 14, column: 9), |
_testDone(8), |
_done() |
]); |
@@ -229,7 +232,7 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2), |
- _testStart(3, 'test'), |
+ _testStart(3, 'test', line: 6, column: 9), |
_print(3, "one"), |
_print(3, "two"), |
_print(3, "three"), |
@@ -266,9 +269,9 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 2), |
- _testStart(3, 'test'), |
+ _testStart(3, 'test', line: 10, column: 9), |
_testDone(3), |
- _testStart(4, 'wait'), |
+ _testStart(4, 'wait', line: 20, column: 9), |
_print(3, "one"), |
_print(3, "two"), |
_print(3, "three"), |
@@ -309,7 +312,7 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 2), |
- _testStart(3, 'test'), |
+ _testStart(3, 'test', line: 9, column: 9), |
_print(3, "one"), |
_print(3, "two"), |
_error(3, "first error"), |
@@ -319,7 +322,7 @@ void main() { |
_print(3, "five"), |
_print(3, "six"), |
_testDone(3, result: "error"), |
- _testStart(4, 'wait'), |
+ _testStart(4, 'wait', line: 27, column: 9), |
_testDone(4), |
_done(success: false) |
]); |
@@ -339,11 +342,11 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 3), |
- _testStart(3, "skip 1", skip: true), |
+ _testStart(3, "skip 1", skip: true, line: 6, column: 9), |
_testDone(3), |
- _testStart(4, "skip 2", skip: true), |
+ _testStart(4, "skip 2", skip: true, line: 7, column: 9), |
_testDone(4), |
- _testStart(5, "skip 3", skip: true), |
+ _testStart(5, "skip 3", skip: true, line: 8, column: 9), |
_testDone(5), |
_done() |
]); |
@@ -363,8 +366,10 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 0), |
- _group(3, name: "skip", parentID: 2, skip: true, testCount: 0), |
- _testStart(4, "skip", groupIDs: [2, 3], skip: true), |
+ _group(3, name: "skip", parentID: 2, skip: true, testCount: 0, |
+ line: 6, column: 9), |
+ _testStart(4, "skip", groupIDs: [2, 3], skip: true, |
+ line: 6, column: 9), |
_testDone(4), |
_done() |
]); |
@@ -381,32 +386,110 @@ void main() { |
_testStart(1, "loading test.dart", groupIDs: []), |
_testDone(1, hidden: true), |
_group(2, testCount: 2), |
- _testStart(3, "skip 1", skip: "some reason"), |
+ _testStart(3, "skip 1", skip: "some reason", line: 6, column: 9), |
_testDone(3), |
- _testStart(4, "skip 2", skip: "or another"), |
+ _testStart(4, "skip 2", skip: "or another", line: 7, column: 9), |
_testDone(4), |
_done() |
]); |
}); |
}); |
+ |
+ group("reports line and column numbers for", () { |
+ test("the first call to setUpAll()", () { |
+ _expectReport(""" |
+ setUpAll(() {}); |
+ setUpAll(() {}); |
+ setUpAll(() {}); |
+ test('success', () {}); |
+ """, [ |
+ _start, |
+ _allSuites(), |
+ _suite(0), |
+ _testStart(1, "loading test.dart", groupIDs: []), |
+ _testDone(1, hidden: true), |
+ _group(2, testCount: 1), |
+ _testStart(3, "(setUpAll)", line: 6, column: 9), |
+ _testDone(3, hidden: true), |
+ _testStart(4, "success", line: 9, column: 9), |
+ _testDone(4), |
+ _done() |
+ ]); |
+ }); |
+ |
+ test("the first call to tearDownAll()", () { |
+ _expectReport(""" |
+ tearDownAll(() {}); |
+ tearDownAll(() {}); |
+ tearDownAll(() {}); |
+ test('success', () {}); |
+ """, [ |
+ _start, |
+ _allSuites(), |
+ _suite(0), |
+ _testStart(1, "loading test.dart", groupIDs: []), |
+ _testDone(1, hidden: true), |
+ _group(2, testCount: 1), |
+ _testStart(3, "success", line: 9, column: 9), |
+ _testDone(3), |
+ _testStart(4, "(tearDownAll)", line: 6, column: 9), |
+ _testDone(4, hidden: true), |
+ _done() |
+ ]); |
+ }); |
+ |
+ test("a test compiled to JS", () { |
+ _expectReport(""" |
+ test('success', () {}); |
+ """, [ |
+ _start, |
+ _allSuites(), |
+ _suite(0, platform: "chrome"), |
+ _testStart(1, "compiling test.dart", groupIDs: []), |
+ _testDone(1, hidden: true), |
+ _group(2, testCount: 1), |
+ _testStart(3, "success", line: 6, column: 9), |
+ _testDone(3), |
+ _done() |
+ ], args: ["-p", "chrome"]); |
+ }, tags: ["chrome"]); |
+ }); |
+ |
+ |
+ test("doesn't report line and column information for a test compiled to JS " |
+ "with --js-trace", () { |
+ _expectReport(""" |
+ test('success', () {}); |
+ """, [ |
+ _start, |
+ _allSuites(), |
+ _suite(0, platform: "chrome"), |
+ _testStart(1, "compiling test.dart", groupIDs: []), |
+ _testDone(1, hidden: true), |
+ _group(2, testCount: 1), |
+ _testStart(3, "success"), |
+ _testDone(3), |
+ _done() |
+ ], args: ["-p", "chrome", "--js-trace"]); |
+ }, tags: ["chrome"]); |
} |
/// Asserts that the tests defined by [tests] produce the JSON events in |
/// [expected]. |
-void _expectReport(String tests, List<Map> expected) { |
+void _expectReport(String tests, List<Map> expected, {List<String> args}) { |
var dart = """ |
import 'dart:async'; |
import 'package:test/test.dart'; |
void main() { |
- $tests |
+$tests |
} |
"""; |
d.file("test.dart", dart).create(); |
- var test = runTest(["test.dart"], reporter: "json"); |
+ var test = runTest(["test.dart"]..addAll(args ?? []), reporter: "json"); |
test.shouldExit(); |
schedule(() async { |
@@ -464,7 +547,12 @@ Map _suite(int id, {String platform, String path}) { |
/// The [testCount] parameter indicates the number of tests in the group. It |
/// defaults to 1. |
Map _group(int id, {String name, int suiteID, int parentID, skip, |
- int testCount}) { |
+ int testCount, int line, int column}) { |
+ if ((line == null) != (column == null)) { |
+ throw new ArgumentError( |
+ "line and column must either both be null or both be passed"); |
+ } |
+ |
return { |
"type": "group", |
"group": { |
@@ -473,7 +561,11 @@ Map _group(int id, {String name, int suiteID, int parentID, skip, |
"suiteID": suiteID ?? 0, |
"parentID": parentID, |
"metadata": _metadata(skip: skip), |
- "testCount": testCount ?? 1 |
+ "testCount": testCount ?? 1, |
+ "line": line, |
+ "column": column, |
+ "url": |
+ line == null ? null : p.toUri(p.join(sandbox, "test.dart")).toString() |
} |
}; |
} |
@@ -486,7 +578,12 @@ Map _group(int id, {String name, int suiteID, int parentID, skip, |
/// reason. If it's a [String], the test is expected to be marked as skipped |
/// with that reason. |
Map _testStart(int id, String name, {int suiteID, Iterable<int> groupIDs, |
- skip}) { |
+ int line, int column, skip}) { |
+ if ((line == null) != (column == null)) { |
+ throw new ArgumentError( |
+ "line and column must either both be null or both be passed"); |
+ } |
+ |
return { |
"type": "testStart", |
"test": { |
@@ -494,7 +591,11 @@ Map _testStart(int id, String name, {int suiteID, Iterable<int> groupIDs, |
"name": name, |
"suiteID": suiteID ?? 0, |
"groupIDs": groupIDs ?? [2], |
- "metadata": _metadata(skip: skip) |
+ "metadata": _metadata(skip: skip), |
+ "line": line, |
+ "column": column, |
+ "url": |
+ line == null ? null : p.toUri(p.join(sandbox, "test.dart")).toString() |
} |
}; |
} |