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

Side by Side 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, 7 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 unified diff | Download patch
« test/client_test.dart ('K') | « test/isolate_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // 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.
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'package:test/test.dart';
6 import 'package:vm_service_client/vm_service_client.dart';
7
8 import 'utils.dart';
9
10 VMServiceClient client;
11 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.
12
13 void main() {
14 tearDown(() {
15 if (client != null) {
16 client.close();
17 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.
18 }
19 isolate = null;
20 });
21
22 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.
23 setUp(() async {
24 client = await runAndConnect(main: r"""
25 print("one");
26 print("two");
27 """);
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
28
29 isolate = (await client.getVM()).isolates.single;
30
31 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.
32 });
33
34 test("no options", () async {
35 var report = await isolate.getSourceReport();
36
37 expect(report.scripts, hasLength(greaterThan(1)));
38 expect(report.ranges, hasLength(greaterThan(1)));
39
40 var customScript = report.scripts.last;
41
42 expect(customScript.uri.toString(), startsWith('data:application/dart'));
43
44 var range = report.ranges.singleWhere(
45 (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.
46
47 expect(range.compiled, isTrue);
48 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.
49 expect(range.coverage, isNull);
50 expect(range.possibleBreakpoints, isNull);
51 });
52
53 test("coverage", () async {
54 var report = await isolate.getSourceReport(includeCoverageReport: true);
55
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.
56 var customScript = report.scripts.last;
57
58 expect(customScript.uri.toString(), startsWith('data:application/dart'));
59
60 var range = report.ranges.singleWhere(
61 (range) => range.scriptIndex == report.scripts.length - 1);
62
63 expect(range.possibleBreakpoints, isNull);
64
65 var coverage = range.coverage;
66
67 expect(coverage.hits, isNotEmpty);
68 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.
69 });
70
71 test("possible break points", () async {
72 var report =
73 await isolate.getSourceReport(includePossibleBreakpoints: true);
74
75 var customScript = report.scripts.last;
76
77 expect(customScript.uri.toString(), startsWith('data:application/dart'));
78
79 var range = report.ranges.singleWhere(
80 (range) => range.scriptIndex == report.scripts.length - 1);
81
82 expect(range.coverage, isNull);
83
84 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.
85 });
86
87 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.
88 var report = await isolate.getSourceReport(
89 includeCoverageReport: true, includePossibleBreakpoints: true);
90
91 var customScript = report.scripts.last;
92
93 expect(customScript.uri.toString(), startsWith('data:application/dart'));
94
95 var range = report.ranges.singleWhere(
96 (range) => range.scriptIndex == report.scripts.length - 1);
97
98 expect(range.coverage, isNotNull);
99 expect(range.possibleBreakpoints, isNotNull);
100 });
101 });
nweiz 2016/04/29 00:52:45 Test forceCompile as well.
kevmoo 2016/04/29 23:36:56 Done.
102
103 test("script and ranges", () async {
104 client = await runAndConnect(
105 topLevel: r'''final foo = 5;
106 int add(a, b) => a + b;
107 ''',
108 main: r"""
109 print("one");
110 print("two");
111 """);
112
113 isolate = (await client.getVM()).isolates.single;
114
115 await isolate.pause();
116
117 var report = await isolate.getSourceReport(includeCoverageReport: true);
118
119 var customScript = report.scripts.last;
120
121 expect(customScript.uri.toString(), startsWith('data:application/dart'));
122
123 report = await customScript.getSourceReport(
124 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.
125
126 expect(report.ranges, hasLength(2));
127
128 var firstRange = report.ranges.first;
129 var secondRange = report.ranges.last;
130
131 expect(firstRange.endPos, lessThan(secondRange.startPos),
132 reason: 'The first range should come before the second range.');
133
134 // validate the start param
135
136 report = await customScript.getSourceReport(
137 includeCoverageReport: true,
138 includePossibleBreakpoints: true,
139 tokenPos: firstRange.endPos + 1);
140
141 expect(report.ranges.single.startPos, secondRange.startPos);
142
143 // validate the end param
144
145 report = await customScript.getSourceReport(
146 includeCoverageReport: true,
147 includePossibleBreakpoints: true,
148 endTokenPos: secondRange.startPos - 1);
149
150 expect(report.ranges.single.endPos, firstRange.endPos);
151
152 // validate both params
153
154 report = await customScript.getSourceReport(
155 includeCoverageReport: true,
156 includePossibleBreakpoints: true,
157 tokenPos: firstRange.endPos + 1,
158 endTokenPos: secondRange.startPos - 1);
159
160 expect(report.ranges, isEmpty);
161 });
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.
162 }
OLDNEW
« 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