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

Side by Side Diff: lib/src/testing.dart

Issue 1230903002: fixes #6, refactor to use AnalysisError/Listener throughout dev_compiler (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 5 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
« no previous file with comments | « lib/src/summary.dart ('k') | lib/src/utils.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 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 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 4
5 library dev_compiler.src.testing; 5 library dev_compiler.src.testing;
6 6
7 import 'dart:collection' show Queue; 7 import 'dart:collection' show Queue;
8 import 'package:analyzer/file_system/file_system.dart'; 8 import 'package:analyzer/file_system/file_system.dart';
9 import 'package:analyzer/file_system/memory_file_system.dart'; 9 import 'package:analyzer/file_system/memory_file_system.dart';
10 import 'package:analyzer/src/generated/ast.dart'; 10 import 'package:analyzer/src/generated/ast.dart';
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 } 171 }
172 172
173 void _expectError(AstNode node, _ErrorExpectation expected) { 173 void _expectError(AstNode node, _ErrorExpectation expected) {
174 174
175 // See if we can find the expected error in our actual errors 175 // See if we can find the expected error in our actual errors
176 for (var actual in _actualErrors) { 176 for (var actual in _actualErrors) {
177 if (actual.offset == node.offset && actual.length == node.length) { 177 if (actual.offset == node.offset && actual.length == node.length) {
178 var actualMsg = _formatActualError(actual); 178 var actualMsg = _formatActualError(actual);
179 expect(_actualErrorLevel(actual), expected.level, 179 expect(_actualErrorLevel(actual), expected.level,
180 reason: 'expected different error code at:\n\n$actualMsg'); 180 reason: 'expected different error code at:\n\n$actualMsg');
181 expect(actual.errorCode.name, expected.typeName, 181 expect(errorCodeName(actual.errorCode), expected.typeName,
182 reason: 'expected different error type at:\n\n$actualMsg'); 182 reason: 'expected different error type at:\n\n$actualMsg');
183 183
184 // We found it. Stop the search. 184 // We found it. Stop the search.
185 _actualErrors.remove(actual); 185 _actualErrors.remove(actual);
186 return; 186 return;
187 } 187 }
188 } 188 }
189 189
190 var span = _createSpan(node.offset, node.length); 190 var span = _createSpan(node.offset, node.length);
191 var levelName = expected.level.name.toLowerCase(); 191 var levelName = expected.level.name.toLowerCase();
192 var msg = span.message(expected.typeName, color: colorOf(levelName)); 192 var msg = span.message(expected.typeName, color: colorOf(levelName));
193 fail('expected error was not reported at:\n\n$levelName: $msg'); 193 fail('expected error was not reported at:\n\n$levelName: $msg');
194 } 194 }
195 195
196 Level _actualErrorLevel(AnalysisError actual) { 196 Level _actualErrorLevel(AnalysisError actual) {
197 return const <ErrorSeverity, Level>{ 197 return const <ErrorSeverity, Level>{
198 ErrorSeverity.ERROR: Level.SEVERE, 198 ErrorSeverity.ERROR: Level.SEVERE,
199 ErrorSeverity.WARNING: Level.WARNING, 199 ErrorSeverity.WARNING: Level.WARNING,
200 ErrorSeverity.INFO: Level.INFO 200 ErrorSeverity.INFO: Level.INFO
201 }[actual.errorCode.errorSeverity]; 201 }[actual.errorCode.errorSeverity];
202 } 202 }
203 203
204 String _formatActualError(AnalysisError actual) { 204 String _formatActualError(AnalysisError actual) {
205 var span = _createSpan(actual.offset, actual.length); 205 var span = _createSpan(actual.offset, actual.length);
206 var levelName = _actualErrorLevel(actual).name.toLowerCase(); 206 var levelName = _actualErrorLevel(actual).name.toLowerCase();
207 var msg = span.message(actual.message, color: colorOf(levelName)); 207 var msg = span.message(actual.message, color: colorOf(levelName));
208 return '$levelName: [${actual.errorCode.name}] $msg'; 208 return '$levelName: [${errorCodeName(actual.errorCode)}] $msg';
209 } 209 }
210 210
211 SourceSpan _createSpan(int offset, int len) { 211 SourceSpan _createSpan(int offset, int len) {
212 return createSpanHelper( 212 return createSpanHelper(
213 _unit, offset, offset + len, _unit.element.source, _unitSourceCode); 213 _unit.lineInfo, offset, offset + len, _unit.element.source, _unitSourceC ode);
214 } 214 }
215 } 215 }
216 216
217 /// Describes an expected message that should be produced by the checker. 217 /// Describes an expected message that should be produced by the checker.
218 class _ErrorExpectation { 218 class _ErrorExpectation {
219 final Level level; 219 final Level level;
220 final String typeName; 220 final String typeName;
221 _ErrorExpectation(this.level, this.typeName); 221 _ErrorExpectation(this.level, this.typeName);
222 222
223 static _ErrorExpectation _parse(String descriptor) { 223 static _ErrorExpectation _parse(String descriptor) {
(...skipping 19 matching lines...) Expand all
243 expect(tokens[1], "should", reason: 'invalid error descriptor'); 243 expect(tokens[1], "should", reason: 'invalid error descriptor');
244 expect(tokens[2], "be", reason: 'invalid error descriptor'); 244 expect(tokens[2], "be", reason: 'invalid error descriptor');
245 if (tokens[0] == "pass") return null; 245 if (tokens[0] == "pass") return null;
246 // TODO(leafp) For now, we just use whatever the current expectation is, 246 // TODO(leafp) For now, we just use whatever the current expectation is,
247 // eventually we could do more automated reporting here. 247 // eventually we could do more automated reporting here.
248 return _parse(tokens[0]); 248 return _parse(tokens[0]);
249 } 249 }
250 250
251 String toString() => '$level $typeName'; 251 String toString() => '$level $typeName';
252 } 252 }
OLDNEW
« no previous file with comments | « lib/src/summary.dart ('k') | lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698