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

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: 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
« lib/src/source_report.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
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;
12
13 void main() {
14 tearDown(() {
15 if (client != null) {
16 client.close();
17 client = null;
18 }
19 isolate = null;
20 });
21
22 group('simple script', () {
23 setUp(() async {
24 client = await runAndConnect(main: r"""
25 print("one");
26 print("two");
27 """);
28
29 isolate = (await client.getVM()).isolates.single;
30
31 await isolate.pause();
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);
46
47 expect(range.compiled, isTrue);
48 expect(range.startPos, lessThan(range.endPos));
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
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);
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);
85 });
86
87 test("both options", () async {
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 });
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 isolate.getSourceReport(
124 includeCoverageReport: true,
125 includePossibleBreakpoints: true,
126 script: customScript);
127
128 expect(report.ranges, hasLength(2));
129
130 var firstRange = report.ranges.first;
131 var secondRange = report.ranges.last;
132
133 expect(firstRange.endPos, lessThan(secondRange.startPos),
134 reason: 'The first range should come before the second range.');
135
136 // validate the start param
137
138 report = await isolate.getSourceReport(
139 includeCoverageReport: true,
140 includePossibleBreakpoints: true,
141 script: customScript,
142 tokenPos: firstRange.endPos + 1);
143
144 expect(report.ranges.single.startPos, secondRange.startPos);
145
146 // validate the end param
147
148 report = await isolate.getSourceReport(
149 includeCoverageReport: true,
150 includePossibleBreakpoints: true,
151 script: customScript,
152 endTokenPos: secondRange.startPos - 1);
153
154 expect(report.ranges.single.endPos, firstRange.endPos);
155
156 // validate both params
157
158 report = await isolate.getSourceReport(
159 includeCoverageReport: true,
160 includePossibleBreakpoints: true,
161 script: customScript,
162 tokenPos: firstRange.endPos + 1,
163 endTokenPos: secondRange.startPos - 1);
164
165 expect(report.ranges, isEmpty);
166 });
167 }
OLDNEW
« lib/src/source_report.dart ('K') | « test/isolate_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698