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 | 4 |
| 5 import 'dart:convert' show JSON, UTF8; |
5 import 'package:async_helper/async_helper.dart'; | 6 import 'package:async_helper/async_helper.dart'; |
6 import 'package:compiler/src/commandline_options.dart'; | 7 import 'package:compiler/src/commandline_options.dart'; |
7 import 'package:compiler/src/diagnostics/messages.dart'; | 8 import 'package:compiler/src/diagnostics/messages.dart'; |
8 import 'package:compiler/src/io/source_file.dart'; | 9 import 'package:compiler/src/io/source_file.dart'; |
9 import 'package:expect/expect.dart'; | 10 import 'package:expect/expect.dart'; |
10 import 'memory_compiler.dart'; | 11 import 'memory_compiler.dart'; |
11 import 'memory_source_file_helper.dart'; | 12 import 'memory_source_file_helper.dart'; |
12 | 13 |
13 const List<Test> TESTS = const <Test>[ | 14 const List<Test> TESTS = const <Test>[ |
14 const Test( | 15 const Test( |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 new Map<MessageKind, String>.from(test.kindToSpan); | 169 new Map<MessageKind, String>.from(test.kindToSpan); |
169 for (CollectedMessage message in collector.messages) { | 170 for (CollectedMessage message in collector.messages) { |
170 String expectedSpanText = kindToSpan[message.messageKind]; | 171 String expectedSpanText = kindToSpan[message.messageKind]; |
171 if (expectedSpanText != null) { | 172 if (expectedSpanText != null) { |
172 SourceFile sourceFile = provider.getSourceFile(message.uri); | 173 SourceFile sourceFile = provider.getSourceFile(message.uri); |
173 String locationMessage = | 174 String locationMessage = |
174 sourceFile.getLocationMessage(MARKER, message.begin, message.end); | 175 sourceFile.getLocationMessage(MARKER, message.begin, message.end); |
175 // Remove `filename:line:column:` and message. | 176 // Remove `filename:line:column:` and message. |
176 String strippedLocationMessage = locationMessage | 177 String strippedLocationMessage = locationMessage |
177 .substring(locationMessage.indexOf(MARKER) + MARKER.length + 1); | 178 .substring(locationMessage.indexOf(MARKER) + MARKER.length + 1); |
| 179 // Using JSON.encode to add string quotes and backslashes. |
| 180 String expected = JSON.encode( |
| 181 UTF8.decode(expectedSpanText.codeUnits, allowMalformed: true)); |
| 182 String actual = JSON.encode(UTF8 |
| 183 .decode(strippedLocationMessage.codeUnits, allowMalformed: true)); |
178 Expect.equals( | 184 Expect.equals( |
179 expectedSpanText, | 185 expectedSpanText, |
180 strippedLocationMessage, | 186 strippedLocationMessage, |
181 "Unexpected span for ${message.messageKind} in\n${test.code}" | 187 "Unexpected span for ${message.messageKind} in\n${test.code}" |
182 "\nExpected:${expectedSpanText.codeUnits}" | 188 "\nExpected: $expected" |
183 "\nActual :${strippedLocationMessage.codeUnits}"); | 189 "\nActual : $actual"); |
184 kindToSpan.remove(message.messageKind); | 190 kindToSpan.remove(message.messageKind); |
185 } | 191 } |
186 } | 192 } |
187 kindToSpan.forEach((MessageKind kind, _) { | 193 kindToSpan.forEach((MessageKind kind, _) { |
188 Expect.fail("Missing message kin $kind in\n${test.code}"); | 194 Expect.fail("Missing message kin $kind in\n${test.code}"); |
189 }); | 195 }); |
190 } | 196 } |
191 }); | 197 }); |
192 } | 198 } |
OLD | NEW |