OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // VMOptions=--error_on_bad_type --error_on_bad_override | 4 // VMOptions=--error_on_bad_type --error_on_bad_override |
5 | 5 |
6 import 'package:observatory/service_io.dart'; | 6 import 'package:observatory/service_io.dart'; |
7 import 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
8 import 'test_helper.dart'; | 8 import 'test_helper.dart'; |
9 import 'service_test_common.dart'; | 9 import 'service_test_common.dart'; |
10 import 'dart:developer'; | 10 import 'dart:developer'; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 'scriptIndex': 0, | 65 'scriptIndex': 0, |
66 'startPos': 38, | 66 'startPos': 38, |
67 'endPos': 87, | 67 'endPos': 87, |
68 'compiled': true, | 68 'compiled': true, |
69 'coverage': {'hits': [53, 71, 81], 'misses': [59]} | 69 'coverage': {'hits': [53, 71, 81], 'misses': [59]} |
70 }; | 70 }; |
71 | 71 |
72 // Full script | 72 // Full script |
73 var params = { 'reports' : ['Coverage'], | 73 var params = { 'reports' : ['Coverage'], |
74 'scriptId' : func.location.script.id }; | 74 'scriptId' : func.location.script.id }; |
75 var coverage = await isolate.invokeRpcNoUpgrade('_getSourceReport', params); | 75 var coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params); |
76 expect(coverage['type'], equals('SourceReport')); | 76 expect(coverage['type'], equals('SourceReport')); |
77 expect(coverage['ranges'].length, 6); | 77 expect(coverage['ranges'].length, 6); |
78 expect(coverage['ranges'][0], equals(expectedRange)); | 78 expect(coverage['ranges'][0], equals(expectedRange)); |
79 expect(coverage['scripts'].length, 1); | 79 expect(coverage['scripts'].length, 1); |
80 expect(coverage['scripts'][0]['uri'], | 80 expect(coverage['scripts'][0]['uri'], |
81 endsWith('get_source_report_test.dart')); | 81 endsWith('get_source_report_test.dart')); |
82 expect(allRangesCompiled(coverage), isFalse); | 82 expect(allRangesCompiled(coverage), isFalse); |
83 | 83 |
84 // Force compilation. | 84 // Force compilation. |
85 params = { 'reports' : ['Coverage'], | 85 params = { 'reports' : ['Coverage'], |
86 'scriptId' : func.location.script.id, | 86 'scriptId' : func.location.script.id, |
87 'forceCompile' : true }; | 87 'forceCompile' : true }; |
88 coverage = await isolate.invokeRpcNoUpgrade('_getSourceReport', params); | 88 coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params); |
89 expect(coverage['type'], equals('SourceReport')); | 89 expect(coverage['type'], equals('SourceReport')); |
90 expect(coverage['ranges'].length, 6); | 90 expect(coverage['ranges'].length, 6); |
91 expect(allRangesCompiled(coverage), isTrue); | 91 expect(allRangesCompiled(coverage), isTrue); |
92 | 92 |
93 // One function | 93 // One function |
94 params = { 'reports' : ['Coverage'], | 94 params = { 'reports' : ['Coverage'], |
95 'scriptId' : func.location.script.id, | 95 'scriptId' : func.location.script.id, |
96 'tokenPos' : func.location.tokenPos, | 96 'tokenPos' : func.location.tokenPos, |
97 'endTokenPos' : func.location.endTokenPos }; | 97 'endTokenPos' : func.location.endTokenPos }; |
98 coverage = await isolate.invokeRpcNoUpgrade('_getSourceReport', params); | 98 coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params); |
99 expect(coverage['type'], equals('SourceReport')); | 99 expect(coverage['type'], equals('SourceReport')); |
100 expect(coverage['ranges'].length, 1); | 100 expect(coverage['ranges'].length, 1); |
101 expect(coverage['ranges'][0], equals(expectedRange)); | 101 expect(coverage['ranges'][0], equals(expectedRange)); |
102 expect(coverage['scripts'].length, 1); | 102 expect(coverage['scripts'].length, 1); |
103 expect(coverage['scripts'][0]['uri'], | 103 expect(coverage['scripts'][0]['uri'], |
104 endsWith('get_source_report_test.dart')); | 104 endsWith('get_source_report_test.dart')); |
105 | 105 |
106 // Full isolate | 106 // Full isolate |
107 params = { 'reports' : ['Coverage'] }; | 107 params = { 'reports' : ['Coverage'] }; |
108 coverage = await isolate.invokeRpcNoUpgrade('_getSourceReport', params); | 108 coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params); |
109 expect(coverage['type'], equals('SourceReport')); | 109 expect(coverage['type'], equals('SourceReport')); |
110 expect(coverage['ranges'].length, greaterThan(1)); | 110 expect(coverage['ranges'].length, greaterThan(1)); |
111 expect(coverage['scripts'].length, greaterThan(1)); | 111 expect(coverage['scripts'].length, greaterThan(1)); |
112 | 112 |
113 // Multiple reports (make sure enum list parameter parsing works). | 113 // Multiple reports (make sure enum list parameter parsing works). |
114 params = { 'reports' : ['_CallSites', 'Coverage', 'PossibleBreakpoints'], | 114 params = { 'reports' : ['_CallSites', 'Coverage', 'PossibleBreakpoints'], |
115 'scriptId' : func.location.script.id, | 115 'scriptId' : func.location.script.id, |
116 'tokenPos' : func.location.tokenPos, | 116 'tokenPos' : func.location.tokenPos, |
117 'endTokenPos' : func.location.endTokenPos }; | 117 'endTokenPos' : func.location.endTokenPos }; |
118 coverage = await isolate.invokeRpcNoUpgrade('_getSourceReport', params); | 118 coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params); |
119 expect(coverage['type'], equals('SourceReport')); | 119 expect(coverage['type'], equals('SourceReport')); |
120 expect(coverage['ranges'].length, 1); | 120 expect(coverage['ranges'].length, 1); |
121 var range = coverage['ranges'][0]; | 121 var range = coverage['ranges'][0]; |
122 expect(range.containsKey('callSites'), isTrue); | 122 expect(range.containsKey('callSites'), isTrue); |
123 expect(range.containsKey('coverage'), isTrue); | 123 expect(range.containsKey('coverage'), isTrue); |
124 expect(range.containsKey('possibleBreakpoints'), isTrue); | 124 expect(range.containsKey('possibleBreakpoints'), isTrue); |
125 | 125 |
126 // missing scriptId with tokenPos. | 126 // missing scriptId with tokenPos. |
127 bool caughtException = false; | 127 bool caughtException = false; |
128 try { | 128 try { |
129 params = { 'reports' : ['Coverage'], | 129 params = { 'reports' : ['Coverage'], |
130 'tokenPos' : func.location.tokenPos }; | 130 'tokenPos' : func.location.tokenPos }; |
131 coverage = await isolate.invokeRpcNoUpgrade('_getSourceReport', params); | 131 coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params); |
132 } on ServerRpcException catch(e) { | 132 } on ServerRpcException catch(e) { |
133 caughtException = true; | 133 caughtException = true; |
134 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 134 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
135 expect(e.message, | 135 expect(e.message, |
136 "_getSourceReport: the 'tokenPos' parameter requires the " | 136 "getSourceReport: the 'tokenPos' parameter requires the " |
137 "\'scriptId\' parameter"); | 137 "\'scriptId\' parameter"); |
138 } | 138 } |
139 expect(caughtException, isTrue); | 139 expect(caughtException, isTrue); |
140 | 140 |
141 // missing scriptId with endTokenPos. | 141 // missing scriptId with endTokenPos. |
142 caughtException = false; | 142 caughtException = false; |
143 try { | 143 try { |
144 params = { 'reports' : ['Coverage'], | 144 params = { 'reports' : ['Coverage'], |
145 'endTokenPos' : func.location.endTokenPos }; | 145 'endTokenPos' : func.location.endTokenPos }; |
146 coverage = await isolate.invokeRpcNoUpgrade('_getSourceReport', params); | 146 coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params); |
147 } on ServerRpcException catch(e) { | 147 } on ServerRpcException catch(e) { |
148 caughtException = true; | 148 caughtException = true; |
149 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 149 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
150 expect(e.message, | 150 expect(e.message, |
151 "_getSourceReport: the 'endTokenPos' parameter requires the " | 151 "getSourceReport: the 'endTokenPos' parameter requires the " |
152 "\'scriptId\' parameter"); | 152 "\'scriptId\' parameter"); |
153 } | 153 } |
154 expect(caughtException, isTrue); | 154 expect(caughtException, isTrue); |
155 }, | 155 }, |
156 | 156 |
157 ]; | 157 ]; |
158 | 158 |
159 main(args) => runIsolateTests(args, tests, testeeConcurrent: testFunction); | 159 main(args) => runIsolateTests(args, tests, testeeConcurrent: testFunction); |
OLD | NEW |