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

Unified Diff: test/source_report_test.dart

Issue 1929063002: pkg/vm_service_client: add getSourceReport to VMServiceReference (Closed) Base URL: https://github.com/dart-lang/vm_service_client.git@master
Patch Set: changelog oops Created 4 years, 8 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
« test/client_test.dart ('K') | « test/isolate_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/source_report_test.dart
diff --git a/test/source_report_test.dart b/test/source_report_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..b87520f79621442c73bf2db3bbd1f82bdcd832a0
--- /dev/null
+++ b/test/source_report_test.dart
@@ -0,0 +1,162 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
nweiz 2016/04/29 00:52:45 2016
kevmoo 2016/04/29 23:36:55 Done.
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:test/test.dart';
+import 'package:vm_service_client/vm_service_client.dart';
+
+import 'utils.dart';
+
+VMServiceClient client;
+VMIsolateRef isolate;
nweiz 2016/04/29 00:52:44 There's no reason for this to be a top-level varia
kevmoo 2016/04/29 23:36:55 Done.
+
+void main() {
+ tearDown(() {
+ if (client != null) {
+ client.close();
+ client = null;
nweiz 2016/04/29 00:52:45 Don't bother nulling out the client. None of the o
kevmoo 2016/04/29 23:36:55 Done.
+ }
+ isolate = null;
+ });
+
+ group('simple script', () {
nweiz 2016/04/29 00:52:44 The group name plus the test name should form a se
kevmoo 2016/04/29 23:36:55 Done.
+ setUp(() async {
+ client = await runAndConnect(main: r"""
+ print("one");
+ print("two");
+ """);
nweiz 2016/04/29 00:52:44 Indent this correctly.
kevmoo 2016/04/29 23:36:55 this is copied from other tests that already exist
nweiz 2016/05/04 23:05:51 The same way it was indented in the tests you copi
kevmoo 2016/05/05 20:46:26 Please look at the latest code. This is changed qu
+
+ isolate = (await client.getVM()).isolates.single;
+
+ await isolate.pause();
nweiz 2016/04/29 00:52:45 I'm not sure what you're going for here, but this
kevmoo 2016/04/29 23:36:55 I tried that and it never gets hit – I think becau
nweiz 2016/05/04 23:05:51 The simplest solution would be to just add Isolate
kevmoo 2016/05/05 20:46:26 Done.
+ });
+
+ test("no options", () async {
+ var report = await isolate.getSourceReport();
+
+ expect(report.scripts, hasLength(greaterThan(1)));
+ expect(report.ranges, hasLength(greaterThan(1)));
+
+ var customScript = report.scripts.last;
+
+ expect(customScript.uri.toString(), startsWith('data:application/dart'));
+
+ var range = report.ranges.singleWhere(
+ (range) => range.scriptIndex == report.scripts.length - 1);
nweiz 2016/04/29 00:52:45 There shouldn't actually be multiple ranges in the
kevmoo 2016/04/29 23:36:55 Acknowledged.
+
+ expect(range.compiled, isTrue);
+ expect(range.startPos, lessThan(range.endPos));
nweiz 2016/04/29 00:52:45 Assert that the source location is equal to the so
kevmoo 2016/04/29 23:36:55 Done.
+ expect(range.coverage, isNull);
+ expect(range.possibleBreakpoints, isNull);
+ });
+
+ test("coverage", () async {
+ var report = await isolate.getSourceReport(includeCoverageReport: true);
+
nweiz 2016/04/29 00:52:44 Nit: Having a newline between every statement isn'
kevmoo 2016/04/29 23:36:55 Acknowledged.
nweiz 2016/05/04 23:05:51 You deleted one newline :p.
kevmoo 2016/05/05 20:46:25 Acknowledged.
+ var customScript = report.scripts.last;
+
+ expect(customScript.uri.toString(), startsWith('data:application/dart'));
+
+ var range = report.ranges.singleWhere(
+ (range) => range.scriptIndex == report.scripts.length - 1);
+
+ expect(range.possibleBreakpoints, isNull);
+
+ var coverage = range.coverage;
+
+ expect(coverage.hits, isNotEmpty);
+ expect(coverage.misses, isEmpty);
nweiz 2016/04/29 00:52:44 These assertions are pretty loose—they don't asser
kevmoo 2016/04/29 23:36:55 Done.
+ });
+
+ test("possible break points", () async {
+ var report =
+ await isolate.getSourceReport(includePossibleBreakpoints: true);
+
+ var customScript = report.scripts.last;
+
+ expect(customScript.uri.toString(), startsWith('data:application/dart'));
+
+ var range = report.ranges.singleWhere(
+ (range) => range.scriptIndex == report.scripts.length - 1);
+
+ expect(range.coverage, isNull);
+
+ expect(range.possibleBreakpoints, isNotEmpty);
nweiz 2016/04/29 00:52:45 Actually assert what the breakpoints are. You can
kevmoo 2016/04/29 23:36:55 Done.
+ });
+
+ test("both options", () async {
nweiz 2016/04/29 00:52:45 I don't think this is necessary.
kevmoo 2016/04/29 23:36:55 Eh, I like to make sure someone in the future does
nweiz 2016/05/04 23:05:51 If you're going to test the cross-product of all o
kevmoo 2016/05/05 20:46:25 Acknowledged.
+ var report = await isolate.getSourceReport(
+ includeCoverageReport: true, includePossibleBreakpoints: true);
+
+ var customScript = report.scripts.last;
+
+ expect(customScript.uri.toString(), startsWith('data:application/dart'));
+
+ var range = report.ranges.singleWhere(
+ (range) => range.scriptIndex == report.scripts.length - 1);
+
+ expect(range.coverage, isNotNull);
+ expect(range.possibleBreakpoints, isNotNull);
+ });
+ });
nweiz 2016/04/29 00:52:45 Test forceCompile as well.
kevmoo 2016/04/29 23:36:56 Done.
+
+ test("script and ranges", () async {
+ client = await runAndConnect(
+ topLevel: r'''final foo = 5;
+ int add(a, b) => a + b;
+ ''',
+ main: r"""
+ print("one");
+ print("two");
+ """);
+
+ isolate = (await client.getVM()).isolates.single;
+
+ await isolate.pause();
+
+ var report = await isolate.getSourceReport(includeCoverageReport: true);
+
+ var customScript = report.scripts.last;
+
+ expect(customScript.uri.toString(), startsWith('data:application/dart'));
+
+ report = await customScript.getSourceReport(
+ includeCoverageReport: true, includePossibleBreakpoints: true);
nweiz 2016/04/29 00:52:45 Rather than grabbing source locations from a previ
kevmoo 2016/04/29 23:36:55 Done.
+
+ expect(report.ranges, hasLength(2));
+
+ var firstRange = report.ranges.first;
+ var secondRange = report.ranges.last;
+
+ expect(firstRange.endPos, lessThan(secondRange.startPos),
+ reason: 'The first range should come before the second range.');
+
+ // validate the start param
+
+ report = await customScript.getSourceReport(
+ includeCoverageReport: true,
+ includePossibleBreakpoints: true,
+ tokenPos: firstRange.endPos + 1);
+
+ expect(report.ranges.single.startPos, secondRange.startPos);
+
+ // validate the end param
+
+ report = await customScript.getSourceReport(
+ includeCoverageReport: true,
+ includePossibleBreakpoints: true,
+ endTokenPos: secondRange.startPos - 1);
+
+ expect(report.ranges.single.endPos, firstRange.endPos);
+
+ // validate both params
+
+ report = await customScript.getSourceReport(
+ includeCoverageReport: true,
+ includePossibleBreakpoints: true,
+ tokenPos: firstRange.endPos + 1,
+ endTokenPos: secondRange.startPos - 1);
+
+ expect(report.ranges, isEmpty);
+ });
nweiz 2016/04/29 00:52:44 Split this up into multiple tests with a shared se
kevmoo 2016/04/29 23:36:55 Done.
+}
« test/client_test.dart ('K') | « test/isolate_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698