OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:front_end/compiler_options.dart'; | 7 import 'package:front_end/compiler_options.dart'; |
8 import 'package:front_end/memory_file_system.dart'; | 8 import 'package:front_end/memory_file_system.dart'; |
9 import 'package:front_end/src/base/processed_options.dart'; | 9 import 'package:front_end/src/base/processed_options.dart'; |
10 import 'package:front_end/src/fasta/fasta.dart' show ByteSink; | 10 import 'package:front_end/src/fasta/fasta.dart' show ByteSink; |
11 import 'package:front_end/src/fasta/fasta_codes.dart'; | 11 import 'package:front_end/src/fasta/fasta_codes.dart'; |
12 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; | 12 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; |
13 import 'package:kernel/kernel.dart' show Program, Library, CanonicalName; | 13 import 'package:kernel/kernel.dart' show Program, Library, CanonicalName; |
14 import 'package:package_config/packages.dart' show Packages; | 14 import 'package:package_config/packages.dart' show Packages; |
15 | |
16 import 'package:test/test.dart'; | 15 import 'package:test/test.dart'; |
17 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 16 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
18 | 17 |
19 main() { | 18 main() { |
20 defineReflectiveSuite(() { | 19 defineReflectiveSuite(() { |
21 defineReflectiveTests(ProcessedOptionsTest); | 20 defineReflectiveTests(ProcessedOptionsTest); |
22 }); | 21 }); |
23 } | 22 } |
24 | 23 |
25 @reflectiveTest | 24 @reflectiveTest |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 .writeAsStringSync('foo:baz\n'); | 135 .writeAsStringSync('foo:baz\n'); |
137 var raw = new CompilerOptions() | 136 var raw = new CompilerOptions() |
138 ..fileSystem = fileSystem | 137 ..fileSystem = fileSystem |
139 ..packagesFileUri = Uri.parse('file:///explicit.packages'); | 138 ..packagesFileUri = Uri.parse('file:///explicit.packages'); |
140 var processed = new ProcessedOptions(raw); | 139 var processed = new ProcessedOptions(raw); |
141 var uriTranslator = await processed.getUriTranslator(); | 140 var uriTranslator = await processed.getUriTranslator(); |
142 checkPackageExpansion('foo', 'baz', uriTranslator.packages); | 141 checkPackageExpansion('foo', 'baz', uriTranslator.packages); |
143 } | 142 } |
144 | 143 |
145 test_getUriTranslator_implicitPackagesFile_nextToScript() async { | 144 test_getUriTranslator_implicitPackagesFile_nextToScript() async { |
146 // Fake the existence of the base directory. | 145 // Create the base directory. |
147 fileSystem | 146 fileSystem |
148 .entityForUri(Uri.parse('file:///base/location/')) | 147 .entityForUri(Uri.parse('file:///base/location/')) |
149 .writeAsStringSync(''); | 148 .createDirectory(); |
150 // Packages directory should be ignored (.packages file takes precedence). | 149 // Packages directory should be ignored (.packages file takes precedence). |
151 fileSystem | 150 fileSystem |
152 .entityForUri(Uri.parse('file:///base/location/packages/')) | 151 .entityForUri(Uri.parse('file:///base/location/packages/')) |
153 .writeAsStringSync(''); | 152 .createDirectory(); |
154 // This .packages file should be ignored. | 153 // This .packages file should be ignored. |
155 fileSystem | 154 fileSystem |
156 .entityForUri(Uri.parse('file:///.packages')) | 155 .entityForUri(Uri.parse('file:///.packages')) |
157 .writeAsStringSync('foo:bar\n'); | 156 .writeAsStringSync('foo:bar\n'); |
158 // This one should be used. | 157 // This one should be used. |
159 fileSystem | 158 fileSystem |
160 .entityForUri(Uri.parse('file:///base/location/.packages')) | 159 .entityForUri(Uri.parse('file:///base/location/.packages')) |
161 .writeAsStringSync('foo:baz\n'); | 160 .writeAsStringSync('foo:baz\n'); |
162 var raw = new CompilerOptions()..fileSystem = fileSystem; | 161 var raw = new CompilerOptions()..fileSystem = fileSystem; |
163 var processed = new ProcessedOptions( | 162 var processed = new ProcessedOptions( |
164 raw, false, [Uri.parse('file:///base/location/script.dart')]); | 163 raw, false, [Uri.parse('file:///base/location/script.dart')]); |
165 var uriTranslator = await processed.getUriTranslator(); | 164 var uriTranslator = await processed.getUriTranslator(); |
166 checkPackageExpansion('foo', 'base/location/baz', uriTranslator.packages); | 165 checkPackageExpansion('foo', 'base/location/baz', uriTranslator.packages); |
167 } | 166 } |
168 | 167 |
169 test_getUriTranslator_implicitPackagesFile_searchAbove() async { | 168 test_getUriTranslator_implicitPackagesFile_searchAbove() async { |
170 // Fake the existence of the base directory. | 169 // Create the base directory. |
171 fileSystem | 170 fileSystem |
172 .entityForUri(Uri.parse('file:///base/location/')) | 171 .entityForUri(Uri.parse('file:///base/location/')) |
173 .writeAsStringSync(''); | 172 .createDirectory(); |
174 // This .packages file should be ignored. | 173 // This .packages file should be ignored. |
175 fileSystem | 174 fileSystem |
176 .entityForUri(Uri.parse('file:///.packages')) | 175 .entityForUri(Uri.parse('file:///.packages')) |
177 .writeAsStringSync('foo:bar\n'); | 176 .writeAsStringSync('foo:bar\n'); |
178 // This one should be used. | 177 // This one should be used. |
179 fileSystem | 178 fileSystem |
180 .entityForUri(Uri.parse('file:///base/.packages')) | 179 .entityForUri(Uri.parse('file:///base/.packages')) |
181 .writeAsStringSync('foo:baz\n'); | 180 .writeAsStringSync('foo:baz\n'); |
182 var raw = new CompilerOptions()..fileSystem = fileSystem; | 181 var raw = new CompilerOptions()..fileSystem = fileSystem; |
183 var processed = new ProcessedOptions( | 182 var processed = new ProcessedOptions( |
184 raw, false, [Uri.parse('file:///base/location/script.dart')]); | 183 raw, false, [Uri.parse('file:///base/location/script.dart')]); |
185 var uriTranslator = await processed.getUriTranslator(); | 184 var uriTranslator = await processed.getUriTranslator(); |
186 checkPackageExpansion('foo', 'base/baz', uriTranslator.packages); | 185 checkPackageExpansion('foo', 'base/baz', uriTranslator.packages); |
187 } | 186 } |
188 | 187 |
189 test_getUriTranslator_implicitPackagesFile_packagesDirectory() async { | 188 test_getUriTranslator_implicitPackagesFile_packagesDirectory() async { |
190 // Fake the existence of the base directory. | 189 // Create the base directory. |
191 fileSystem | 190 fileSystem |
192 .entityForUri(Uri.parse('file:///base/location/')) | 191 .entityForUri(Uri.parse('file:///base/location/')) |
193 .writeAsStringSync(''); | 192 .createDirectory(); |
194 fileSystem | 193 fileSystem |
195 .entityForUri(Uri.parse('file:///base/location/packages/')) | 194 .entityForUri(Uri.parse('file:///base/location/packages/')) |
196 .writeAsStringSync(''); | 195 .createDirectory(); |
197 | 196 |
198 // Both of these .packages file should be ignored. | 197 // Both of these .packages file should be ignored. |
199 fileSystem | 198 fileSystem |
200 .entityForUri(Uri.parse('file:///.packages')) | 199 .entityForUri(Uri.parse('file:///.packages')) |
201 .writeAsStringSync('foo:bar\n'); | 200 .writeAsStringSync('foo:bar\n'); |
202 fileSystem | 201 fileSystem |
203 .entityForUri(Uri.parse('file:///base/.packages')) | 202 .entityForUri(Uri.parse('file:///base/.packages')) |
204 .writeAsStringSync('foo:baz\n'); | 203 .writeAsStringSync('foo:baz\n'); |
205 var raw = new CompilerOptions()..fileSystem = fileSystem; | 204 var raw = new CompilerOptions()..fileSystem = fileSystem; |
206 var processed = new ProcessedOptions( | 205 var processed = new ProcessedOptions( |
207 raw, false, [Uri.parse('file:///base/location/script.dart')]); | 206 raw, false, [Uri.parse('file:///base/location/script.dart')]); |
208 var uriTranslator = await processed.getUriTranslator(); | 207 var uriTranslator = await processed.getUriTranslator(); |
209 checkPackageExpansion( | 208 checkPackageExpansion( |
210 'foo', 'base/location/packages/foo', uriTranslator.packages); | 209 'foo', 'base/location/packages/foo', uriTranslator.packages); |
211 } | 210 } |
212 | 211 |
213 test_getUriTranslator_implicitPackagesFile_noPackages() async { | 212 test_getUriTranslator_implicitPackagesFile_noPackages() async { |
214 // Fake the existence of the base directory. | 213 // Create the base directory. |
215 fileSystem | 214 fileSystem |
216 .entityForUri(Uri.parse('file:///base/location/')) | 215 .entityForUri(Uri.parse('file:///base/location/')) |
217 .writeAsStringSync(''); | 216 .createDirectory(); |
218 var errors = []; | 217 var errors = []; |
219 // .packages file should be ignored. | 218 // .packages file should be ignored. |
220 var raw = new CompilerOptions() | 219 var raw = new CompilerOptions() |
221 ..fileSystem = fileSystem | 220 ..fileSystem = fileSystem |
222 ..onError = (e) => errors.add(e); | 221 ..onError = (e) => errors.add(e); |
223 var processed = new ProcessedOptions( | 222 var processed = new ProcessedOptions( |
224 raw, false, [Uri.parse('file:///base/location/script.dart')]); | 223 raw, false, [Uri.parse('file:///base/location/script.dart')]); |
225 var uriTranslator = await processed.getUriTranslator(); | 224 var uriTranslator = await processed.getUriTranslator(); |
226 expect(errors, isEmpty); | 225 expect(errors, isEmpty); |
227 expect(uriTranslator.packages.asMap(), isEmpty); | 226 expect(uriTranslator.packages.asMap(), isEmpty); |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 var index = messageTemplate.indexOf('#'); | 390 var index = messageTemplate.indexOf('#'); |
392 var prefix = messageTemplate.substring(0, index - 1); | 391 var prefix = messageTemplate.substring(0, index - 1); |
393 | 392 |
394 // Check that the prefix is not empty and that it contains more than one | 393 // Check that the prefix is not empty and that it contains more than one |
395 // word. | 394 // word. |
396 expect(prefix.length > 0, isTrue); | 395 expect(prefix.length > 0, isTrue); |
397 expect(prefix.contains(' '), isTrue); | 396 expect(prefix.contains(' '), isTrue); |
398 return prefix; | 397 return prefix; |
399 } | 398 } |
400 } | 399 } |
OLD | NEW |