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

Side by Side Diff: pkg/analysis_server/test/context_manager_test.dart

Issue 1266923004: More fixes for failures on the Windows bot (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 test.context.directory.manager; 5 library test.context.directory.manager;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analysis_server/src/context_manager.dart'; 9 import 'package:analysis_server/src/context_manager.dart';
10 import 'package:analyzer/file_system/file_system.dart'; 10 import 'package:analyzer/file_system/file_system.dart';
11 import 'package:analyzer/file_system/memory_file_system.dart'; 11 import 'package:analyzer/file_system/memory_file_system.dart';
12 import 'package:analyzer/instrumentation/instrumentation.dart'; 12 import 'package:analyzer/instrumentation/instrumentation.dart';
13 import 'package:analyzer/src/generated/engine.dart'; 13 import 'package:analyzer/src/generated/engine.dart';
14 import 'package:analyzer/src/generated/source.dart'; 14 import 'package:analyzer/src/generated/source.dart';
15 import 'package:analyzer/src/generated/source_io.dart'; 15 import 'package:analyzer/src/generated/source_io.dart';
16 import 'package:package_config/packages.dart'; 16 import 'package:package_config/packages.dart';
17 import 'package:path/path.dart'; 17 import 'package:path/path.dart';
18 import 'package:test_reflective_loader/test_reflective_loader.dart'; 18 import 'package:test_reflective_loader/test_reflective_loader.dart';
19 import 'package:unittest/unittest.dart'; 19 import 'package:unittest/unittest.dart';
20 20
21 import 'mocks.dart'; 21 import 'mocks.dart';
22 import 'utils.dart';
22 23
23 main() { 24 main() {
24 groupSep = ' | '; 25 initializeTestEnvironment();
25 defineReflectiveTests(AbstractContextManagerTest); 26 defineReflectiveTests(AbstractContextManagerTest);
26 } 27 }
27 28
28 @reflectiveTest 29 @reflectiveTest
29 class AbstractContextManagerTest { 30 class AbstractContextManagerTest {
30 /** 31 /**
31 * The name of the 'bin' directory. 32 * The name of the 'bin' directory.
32 */ 33 */
33 static const String BIN_NAME = 'bin'; 34 static const String BIN_NAME = 'bin';
34 35
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 manager.callbacks = callbacks; 90 manager.callbacks = callbacks;
90 resourceProvider.newFolder(projPath); 91 resourceProvider.newFolder(projPath);
91 ContextManagerImpl.ENABLE_PACKAGESPEC_SUPPORT = true; 92 ContextManagerImpl.ENABLE_PACKAGESPEC_SUPPORT = true;
92 } 93 }
93 94
94 void tearDown() { 95 void tearDown() {
95 ContextManagerImpl.ENABLE_PACKAGESPEC_SUPPORT = false; 96 ContextManagerImpl.ENABLE_PACKAGESPEC_SUPPORT = false;
96 } 97 }
97 98
98 void test_contextsInAnalysisRoot_nestedContext() { 99 void test_contextsInAnalysisRoot_nestedContext() {
99 String subProjPath = join(projPath, 'subproj'); 100 String subProjPath = posix.join(projPath, 'subproj');
100 Folder subProjFolder = resourceProvider.newFolder(subProjPath); 101 Folder subProjFolder = resourceProvider.newFolder(subProjPath);
101 resourceProvider.newFile(join(subProjPath, 'pubspec.yaml'), 'contents'); 102 resourceProvider.newFile(
102 String subProjFilePath = join(subProjPath, 'file.dart'); 103 posix.join(subProjPath, 'pubspec.yaml'), 'contents');
104 String subProjFilePath = posix.join(subProjPath, 'file.dart');
103 resourceProvider.newFile(subProjFilePath, 'contents'); 105 resourceProvider.newFile(subProjFilePath, 'contents');
104 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 106 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
105 // Make sure that there really are contexts for both the main project and 107 // Make sure that there really are contexts for both the main project and
106 // the subproject. 108 // the subproject.
107 Folder projFolder = resourceProvider.getFolder(projPath); 109 Folder projFolder = resourceProvider.getFolder(projPath);
108 ContextInfo projContextInfo = manager.getContextInfoFor(projFolder); 110 ContextInfo projContextInfo = manager.getContextInfoFor(projFolder);
109 expect(projContextInfo, isNotNull); 111 expect(projContextInfo, isNotNull);
110 expect(projContextInfo.folder, projFolder); 112 expect(projContextInfo.folder, projFolder);
111 ContextInfo subProjContextInfo = manager.getContextInfoFor(subProjFolder); 113 ContextInfo subProjContextInfo = manager.getContextInfoFor(subProjFolder);
112 expect(subProjContextInfo, isNotNull); 114 expect(subProjContextInfo, isNotNull);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 // set roots 146 // set roots
145 resourceProvider.newFolder(project); 147 resourceProvider.newFolder(project);
146 resourceProvider.newFolder(excludedFolder); 148 resourceProvider.newFolder(excludedFolder);
147 manager.setRoots( 149 manager.setRoots(
148 <String>[project], <String>[excludedFolder], <String, String>{}); 150 <String>[project], <String>[excludedFolder], <String, String>{});
149 // verify 151 // verify
150 expect(manager.isInAnalysisRoot('$excludedFolder/test.dart'), isFalse); 152 expect(manager.isInAnalysisRoot('$excludedFolder/test.dart'), isFalse);
151 } 153 }
152 154
153 void test_isInAnalysisRoot_inNestedContext() { 155 void test_isInAnalysisRoot_inNestedContext() {
154 String subProjPath = join(projPath, 'subproj'); 156 String subProjPath = posix.join(projPath, 'subproj');
155 Folder subProjFolder = resourceProvider.newFolder(subProjPath); 157 Folder subProjFolder = resourceProvider.newFolder(subProjPath);
156 resourceProvider.newFile(join(subProjPath, 'pubspec.yaml'), 'contents'); 158 resourceProvider.newFile(
157 String subProjFilePath = join(subProjPath, 'file.dart'); 159 posix.join(subProjPath, 'pubspec.yaml'), 'contents');
160 String subProjFilePath = posix.join(subProjPath, 'file.dart');
158 resourceProvider.newFile(subProjFilePath, 'contents'); 161 resourceProvider.newFile(subProjFilePath, 'contents');
159 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 162 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
160 // Make sure that there really is a context for the subproject. 163 // Make sure that there really is a context for the subproject.
161 ContextInfo subProjContextInfo = manager.getContextInfoFor(subProjFolder); 164 ContextInfo subProjContextInfo = manager.getContextInfoFor(subProjFolder);
162 expect(subProjContextInfo, isNotNull); 165 expect(subProjContextInfo, isNotNull);
163 expect(subProjContextInfo.folder, subProjFolder); 166 expect(subProjContextInfo.folder, subProjFolder);
164 // Check that isInAnalysisRoot() works. 167 // Check that isInAnalysisRoot() works.
165 expect(manager.isInAnalysisRoot(subProjFilePath), isTrue); 168 expect(manager.isInAnalysisRoot(subProjFilePath), isTrue);
166 } 169 }
167 170
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 test_path_filter_analysis_option() async { 210 test_path_filter_analysis_option() async {
208 // Create files. 211 // Create files.
209 String libPath = newFolder([projPath, LIB_NAME]); 212 String libPath = newFolder([projPath, LIB_NAME]);
210 newFile([libPath, 'main.dart']); 213 newFile([libPath, 'main.dart']);
211 newFile([libPath, 'nope.dart']); 214 newFile([libPath, 'nope.dart']);
212 String sdkExtPath = newFolder([projPath, 'sdk_ext']); 215 String sdkExtPath = newFolder([projPath, 'sdk_ext']);
213 newFile([sdkExtPath, 'entry.dart']); 216 newFile([sdkExtPath, 'entry.dart']);
214 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); 217 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']);
215 newFile([sdkExtSrcPath, 'part.dart']); 218 newFile([sdkExtSrcPath, 'part.dart']);
216 // Setup analysis options file with ignore list. 219 // Setup analysis options file with ignore list.
217 newFile([projPath, '.analysis_options'], r''' 220 newFile(
221 [projPath, '.analysis_options'],
222 r'''
218 analyzer: 223 analyzer:
219 exclude: 224 exclude:
220 - lib/nope.dart 225 - lib/nope.dart
221 - 'sdk_ext/**' 226 - 'sdk_ext/**'
222 '''); 227 ''');
223 // Setup context. 228 // Setup context.
224 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 229 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
225 // Verify that analysis options was parsed and the ignore patterns applied. 230 // Verify that analysis options was parsed and the ignore patterns applied.
226 Map<String, int> fileTimestamps = 231 Map<String, int> fileTimestamps =
227 callbacks.currentContextFilePaths[projPath]; 232 callbacks.currentContextFilePaths[projPath];
228 expect(fileTimestamps, isNotEmpty); 233 expect(fileTimestamps, isNotEmpty);
229 List<String> files = fileTimestamps.keys.toList(); 234 List<String> files = fileTimestamps.keys.toList();
230 expect(files.length, equals(1)); 235 expect(files.length, equals(1));
231 expect(files[0], equals('/my/proj/lib/main.dart')); 236 expect(files[0], equals('/my/proj/lib/main.dart'));
232 } 237 }
233 238
234 test_path_filter_child_contexts_option() async { 239 test_path_filter_child_contexts_option() async {
235 // Create files. 240 // Create files.
236 String libPath = newFolder([projPath, LIB_NAME]); 241 String libPath = newFolder([projPath, LIB_NAME]);
237 newFile([libPath, 'main.dart']); 242 newFile([libPath, 'main.dart']);
238 newFile([libPath, 'pubspec.yaml'], r''' 243 newFile(
244 [libPath, 'pubspec.yaml'],
245 r'''
239 name: foobar 246 name: foobar
240 '''); 247 ''');
241 String otherLibPath = newFolder([projPath, 'other_lib']); 248 String otherLibPath = newFolder([projPath, 'other_lib']);
242 newFile([otherLibPath, 'entry.dart']); 249 newFile([otherLibPath, 'entry.dart']);
243 newFile([otherLibPath, 'pubspec.yaml'], r''' 250 newFile(
251 [otherLibPath, 'pubspec.yaml'],
252 r'''
244 name: other_lib 253 name: other_lib
245 '''); 254 ''');
246 // Setup analysis options file with ignore list that ignores the 'other_lib' 255 // Setup analysis options file with ignore list that ignores the 'other_lib'
247 // directory by name. 256 // directory by name.
248 newFile([projPath, '.analysis_options'], r''' 257 newFile(
258 [projPath, '.analysis_options'],
259 r'''
249 analyzer: 260 analyzer:
250 exclude: 261 exclude:
251 - 'other_lib' 262 - 'other_lib'
252 '''); 263 ''');
253 // Setup context. 264 // Setup context.
254 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 265 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
255 // Verify that the context in other_lib wasn't created and that the 266 // Verify that the context in other_lib wasn't created and that the
256 // context in lib was created. 267 // context in lib was created.
257 var contexts = manager.contextsInAnalysisRoot( 268 var contexts =
258 resourceProvider.newFolder(projPath)); 269 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath));
270 expect(contexts.length, 2);
271 expect(contexts[0].name, equals('/my/proj'));
272 expect(contexts[1].name, equals('/my/proj/lib'));
273 }
274
275 test_path_filter_recursive_wildcard_child_contexts_option() async {
276 // Create files.
277 String libPath = newFolder([projPath, LIB_NAME]);
278 newFile([libPath, 'main.dart']);
279 newFile(
280 [libPath, 'pubspec.yaml'],
281 r'''
282 name: foobar
283 ''');
284 String otherLibPath = newFolder([projPath, 'other_lib']);
285 newFile([otherLibPath, 'entry.dart']);
286 newFile(
287 [otherLibPath, 'pubspec.yaml'],
288 r'''
289 name: other_lib
290 ''');
291 // Setup analysis options file with ignore list that ignores 'other_lib'
292 // and all descendants.
293 newFile(
294 [projPath, '.analysis_options'],
295 r'''
296 analyzer:
297 exclude:
298 - 'other_lib/**'
299 ''');
300 // Setup context.
301 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
302 // Verify that the context in other_lib wasn't created and that the
303 // context in lib was created.
304 var contexts =
305 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath));
259 expect(contexts.length, 2); 306 expect(contexts.length, 2);
260 expect(contexts[0].name, equals('/my/proj')); 307 expect(contexts[0].name, equals('/my/proj'));
261 expect(contexts[1].name, equals('/my/proj/lib')); 308 expect(contexts[1].name, equals('/my/proj/lib'));
262 } 309 }
263 310
264 test_path_filter_wildcard_child_contexts_option() async { 311 test_path_filter_wildcard_child_contexts_option() async {
265 // Create files. 312 // Create files.
266 String libPath = newFolder([projPath, LIB_NAME]); 313 String libPath = newFolder([projPath, LIB_NAME]);
267 newFile([libPath, 'main.dart']); 314 newFile([libPath, 'main.dart']);
268 newFile([libPath, 'pubspec.yaml'], r''' 315 newFile(
316 [libPath, 'pubspec.yaml'],
317 r'''
269 name: foobar 318 name: foobar
270 '''); 319 ''');
271 String otherLibPath = newFolder([projPath, 'other_lib']); 320 String otherLibPath = newFolder([projPath, 'other_lib']);
272 newFile([otherLibPath, 'entry.dart']); 321 newFile([otherLibPath, 'entry.dart']);
273 newFile([otherLibPath, 'pubspec.yaml'], r''' 322 newFile(
323 [otherLibPath, 'pubspec.yaml'],
324 r'''
274 name: other_lib 325 name: other_lib
275 '''); 326 ''');
276 // Setup analysis options file with ignore list that ignores 'other_lib' 327 // Setup analysis options file with ignore list that ignores 'other_lib'
277 // and all immediate children. 328 // and all immediate children.
278 newFile([projPath, '.analysis_options'], r''' 329 newFile(
330 [projPath, '.analysis_options'],
331 r'''
279 analyzer: 332 analyzer:
280 exclude: 333 exclude:
281 - 'other_lib/*' 334 - 'other_lib/*'
282 '''); 335 ''');
283 // Setup context. 336 // Setup context.
284 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 337 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
285 // Verify that the context in other_lib wasn't created and that the 338 // Verify that the context in other_lib wasn't created and that the
286 // context in lib was created. 339 // context in lib was created.
287 var contexts = manager.contextsInAnalysisRoot( 340 var contexts =
288 resourceProvider.newFolder(projPath)); 341 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath));
289 expect(contexts.length, 2); 342 expect(contexts.length, 2);
290 expect(contexts[0].name, equals('/my/proj')); 343 expect(contexts[0].name, equals('/my/proj'));
291 expect(contexts[1].name, equals('/my/proj/lib')); 344 expect(contexts[1].name, equals('/my/proj/lib'));
292 }
293
294 test_path_filter_recursive_wildcard_child_contexts_option() async {
295 // Create files.
296 String libPath = newFolder([projPath, LIB_NAME]);
297 newFile([libPath, 'main.dart']);
298 newFile([libPath, 'pubspec.yaml'], r'''
299 name: foobar
300 ''');
301 String otherLibPath = newFolder([projPath, 'other_lib']);
302 newFile([otherLibPath, 'entry.dart']);
303 newFile([otherLibPath, 'pubspec.yaml'], r'''
304 name: other_lib
305 ''');
306 // Setup analysis options file with ignore list that ignores 'other_lib'
307 // and all descendants.
308 newFile([projPath, '.analysis_options'], r'''
309 analyzer:
310 exclude:
311 - 'other_lib/**'
312 ''');
313 // Setup context.
314 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
315 // Verify that the context in other_lib wasn't created and that the
316 // context in lib was created.
317 var contexts = manager.contextsInAnalysisRoot(
318 resourceProvider.newFolder(projPath));
319 expect(contexts.length, 2);
320 expect(contexts[0].name, equals('/my/proj'));
321 expect(contexts[1].name, equals('/my/proj/lib'));
322 } 345 }
323 346
324 test_refresh_folder_with_packagespec() { 347 test_refresh_folder_with_packagespec() {
325 // create a context with a .packages file 348 // create a context with a .packages file
326 String packagespecFile = posix.join(projPath, '.packages'); 349 String packagespecFile = posix.join(projPath, '.packages');
327 resourceProvider.newFile(packagespecFile, ''); 350 resourceProvider.newFile(packagespecFile, '');
328 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 351 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
329 return pumpEventQueue().then((_) { 352 return pumpEventQueue().then((_) {
330 expect(callbacks.currentContextPaths.toList(), [projPath]); 353 expect(callbacks.currentContextPaths.toList(), [projPath]);
331 callbacks.now++; 354 callbacks.now++;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 490
468 void test_setRoots_addFolderWithNestedPackageSpec() { 491 void test_setRoots_addFolderWithNestedPackageSpec() {
469 String examplePath = newFolder([projPath, EXAMPLE_NAME]); 492 String examplePath = newFolder([projPath, EXAMPLE_NAME]);
470 String libPath = newFolder([projPath, LIB_NAME]); 493 String libPath = newFolder([projPath, LIB_NAME]);
471 494
472 newFile([projPath, ContextManagerImpl.PACKAGE_SPEC_NAME]); 495 newFile([projPath, ContextManagerImpl.PACKAGE_SPEC_NAME]);
473 newFile([libPath, 'main.dart']); 496 newFile([libPath, 'main.dart']);
474 newFile([examplePath, ContextManagerImpl.PACKAGE_SPEC_NAME]); 497 newFile([examplePath, ContextManagerImpl.PACKAGE_SPEC_NAME]);
475 newFile([examplePath, 'example.dart']); 498 newFile([examplePath, 'example.dart']);
476 499
477 packageMapProvider.packageMap['proj'] = 500 packageMapProvider.packageMap['proj'] = [
478 [resourceProvider.getResource(libPath)]; 501 resourceProvider.getResource(libPath)
502 ];
479 503
480 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 504 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
481 505
482 expect(callbacks.currentContextPaths, hasLength(2)); 506 expect(callbacks.currentContextPaths, hasLength(2));
483 507
484 expect(callbacks.currentContextPaths, contains(projPath)); 508 expect(callbacks.currentContextPaths, contains(projPath));
485 Set<Source> projSources = callbacks.currentContextSources[projPath]; 509 Set<Source> projSources = callbacks.currentContextSources[projPath];
486 expect(projSources, hasLength(1)); 510 expect(projSources, hasLength(1));
487 expect(projSources.first.uri.toString(), 'file:///my/proj/lib/main.dart'); 511 expect(projSources.first.uri.toString(), 'file:///my/proj/lib/main.dart');
488 512
489 expect(callbacks.currentContextPaths, contains(examplePath)); 513 expect(callbacks.currentContextPaths, contains(examplePath));
490 Set<Source> exampleSources = callbacks.currentContextSources[examplePath]; 514 Set<Source> exampleSources = callbacks.currentContextSources[examplePath];
491 expect(exampleSources, hasLength(1)); 515 expect(exampleSources, hasLength(1));
492 expect(exampleSources.first.uri.toString(), 516 expect(exampleSources.first.uri.toString(),
493 'file:///my/proj/example/example.dart'); 517 'file:///my/proj/example/example.dart');
494 } 518 }
495 519
496 void test_setRoots_addFolderWithNestedPubspec() { 520 void test_setRoots_addFolderWithNestedPubspec() {
497 String examplePath = newFolder([projPath, EXAMPLE_NAME]); 521 String examplePath = newFolder([projPath, EXAMPLE_NAME]);
498 String libPath = newFolder([projPath, LIB_NAME]); 522 String libPath = newFolder([projPath, LIB_NAME]);
499 523
500 newFile([projPath, ContextManagerImpl.PUBSPEC_NAME]); 524 newFile([projPath, ContextManagerImpl.PUBSPEC_NAME]);
501 newFile([libPath, 'main.dart']); 525 newFile([libPath, 'main.dart']);
502 newFile([examplePath, ContextManagerImpl.PUBSPEC_NAME]); 526 newFile([examplePath, ContextManagerImpl.PUBSPEC_NAME]);
503 newFile([examplePath, 'example.dart']); 527 newFile([examplePath, 'example.dart']);
504 528
505 packageMapProvider.packageMap['proj'] = 529 packageMapProvider.packageMap['proj'] = [
506 [resourceProvider.getResource(libPath)]; 530 resourceProvider.getResource(libPath)
531 ];
507 532
508 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 533 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
509 534
510 expect(callbacks.currentContextPaths, hasLength(2)); 535 expect(callbacks.currentContextPaths, hasLength(2));
511 536
512 expect(callbacks.currentContextPaths, contains(projPath)); 537 expect(callbacks.currentContextPaths, contains(projPath));
513 Set<Source> projSources = callbacks.currentContextSources[projPath]; 538 Set<Source> projSources = callbacks.currentContextSources[projPath];
514 expect(projSources, hasLength(1)); 539 expect(projSources, hasLength(1));
515 expect(projSources.first.uri.toString(), 'package:proj/main.dart'); 540 expect(projSources.first.uri.toString(), 'package:proj/main.dart');
516 541
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 String libPath = newFolder([projPath, LIB_NAME]); 605 String libPath = newFolder([projPath, LIB_NAME]);
581 String srcPath = newFolder([libPath, SRC_NAME]); 606 String srcPath = newFolder([libPath, SRC_NAME]);
582 String testPath = newFolder([projPath, TEST_NAME]); 607 String testPath = newFolder([projPath, TEST_NAME]);
583 608
584 newFile([projPath, ContextManagerImpl.PUBSPEC_NAME]); 609 newFile([projPath, ContextManagerImpl.PUBSPEC_NAME]);
585 String appPath = newFile([binPath, 'app.dart']); 610 String appPath = newFile([binPath, 'app.dart']);
586 newFile([libPath, 'main.dart']); 611 newFile([libPath, 'main.dart']);
587 newFile([srcPath, 'internal.dart']); 612 newFile([srcPath, 'internal.dart']);
588 String testFilePath = newFile([testPath, 'main_test.dart']); 613 String testFilePath = newFile([testPath, 'main_test.dart']);
589 614
590 packageMapProvider.packageMap['proj'] = 615 packageMapProvider.packageMap['proj'] = [
591 [resourceProvider.getResource(libPath)]; 616 resourceProvider.getResource(libPath)
617 ];
592 618
593 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 619 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
594 Set<Source> sources = callbacks.currentContextSources[projPath]; 620 Set<Source> sources = callbacks.currentContextSources[projPath];
595 621
596 expect(callbacks.currentContextPaths, hasLength(1)); 622 expect(callbacks.currentContextPaths, hasLength(1));
597 expect(callbacks.currentContextPaths, contains(projPath)); 623 expect(callbacks.currentContextPaths, contains(projPath));
598 expect(sources, hasLength(4)); 624 expect(sources, hasLength(4));
599 List<String> uris = 625 List<String> uris =
600 sources.map((Source source) => source.uri.toString()).toList(); 626 sources.map((Source source) => source.uri.toString()).toList();
601 expect(uris, contains('file://$appPath')); 627 expect(uris, contains('file://$appPath'));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 String subProjectA_file = '$subProjectA/bin/a.dart'; 666 String subProjectA_file = '$subProjectA/bin/a.dart';
641 String subProjectB_file = '$subProjectB/bin/b.dart'; 667 String subProjectB_file = '$subProjectB/bin/b.dart';
642 // create files 668 // create files
643 resourceProvider.newFile('$subProjectA/pubspec.yaml', 'pubspec'); 669 resourceProvider.newFile('$subProjectA/pubspec.yaml', 'pubspec');
644 resourceProvider.newFile('$subProjectB/pubspec.yaml', 'pubspec'); 670 resourceProvider.newFile('$subProjectB/pubspec.yaml', 'pubspec');
645 resourceProvider.newFile(rootFile, 'library root;'); 671 resourceProvider.newFile(rootFile, 'library root;');
646 resourceProvider.newFile(subProjectA_file, 'library a;'); 672 resourceProvider.newFile(subProjectA_file, 'library a;');
647 resourceProvider.newFile(subProjectB_file, 'library b;'); 673 resourceProvider.newFile(subProjectB_file, 'library b;');
648 // configure package maps 674 // configure package maps
649 packageMapProvider.packageMaps = { 675 packageMapProvider.packageMaps = {
650 subProjectA: {'foo': [resourceProvider.newFolder('/package/foo')]}, 676 subProjectA: {
651 subProjectB: {'bar': [resourceProvider.newFolder('/package/bar')]}, 677 'foo': [resourceProvider.newFolder('/package/foo')]
678 },
679 subProjectB: {
680 'bar': [resourceProvider.newFolder('/package/bar')]
681 },
652 }; 682 };
653 // set roots 683 // set roots
654 manager.setRoots(<String>[root], <String>[], <String, String>{}); 684 manager.setRoots(<String>[root], <String>[], <String, String>{});
655 callbacks.assertContextPaths([root, subProjectA, subProjectB]); 685 callbacks.assertContextPaths([root, subProjectA, subProjectB]);
656 // verify files 686 // verify files
657 callbacks.assertContextFiles(root, [rootFile]); 687 callbacks.assertContextFiles(root, [rootFile]);
658 callbacks.assertContextFiles(subProjectA, [subProjectA_file]); 688 callbacks.assertContextFiles(subProjectA, [subProjectA_file]);
659 callbacks.assertContextFiles(subProjectB, [subProjectB_file]); 689 callbacks.assertContextFiles(subProjectB, [subProjectB_file]);
660 // verify package maps 690 // verify package maps
661 _checkPackageMap(root, isNull); 691 _checkPackageMap(root, isNull);
662 _checkPackageMap( 692 _checkPackageMap(
663 subProjectA, equals(packageMapProvider.packageMaps[subProjectA])); 693 subProjectA, equals(packageMapProvider.packageMaps[subProjectA]));
664 _checkPackageMap( 694 _checkPackageMap(
665 subProjectB, equals(packageMapProvider.packageMaps[subProjectB])); 695 subProjectB, equals(packageMapProvider.packageMaps[subProjectB]));
666 } 696 }
667 697
668 void test_setRoots_addPackageRoot() { 698 void test_setRoots_addPackageRoot() {
669 String packagePathFoo = '/package1/foo'; 699 String packagePathFoo = '/package1/foo';
670 String packageRootPath = '/package2/foo'; 700 String packageRootPath = '/package2/foo';
671 Folder packageFolder = resourceProvider.newFolder(packagePathFoo); 701 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
672 packageMapProvider.packageMap = {'foo': [packageFolder]}; 702 packageMapProvider.packageMap = {
703 'foo': [packageFolder]
704 };
673 List<String> includedPaths = <String>[projPath]; 705 List<String> includedPaths = <String>[projPath];
674 List<String> excludedPaths = <String>[]; 706 List<String> excludedPaths = <String>[];
675 manager.setRoots(includedPaths, excludedPaths, <String, String>{}); 707 manager.setRoots(includedPaths, excludedPaths, <String, String>{});
676 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); 708 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
677 manager.setRoots(includedPaths, excludedPaths, <String, String>{ 709 manager.setRoots(includedPaths, excludedPaths,
678 projPath: packageRootPath 710 <String, String>{projPath: packageRootPath});
679 });
680 _checkPackageRoot(projPath, equals(packageRootPath)); 711 _checkPackageRoot(projPath, equals(packageRootPath));
681 } 712 }
682 713
683 void test_setRoots_changePackageRoot() { 714 void test_setRoots_changePackageRoot() {
684 String packageRootPath1 = '/package1'; 715 String packageRootPath1 = '/package1';
685 String packageRootPath2 = '/package2'; 716 String packageRootPath2 = '/package2';
686 List<String> includedPaths = <String>[projPath]; 717 List<String> includedPaths = <String>[projPath];
687 List<String> excludedPaths = <String>[]; 718 List<String> excludedPaths = <String>[];
688 manager.setRoots(includedPaths, excludedPaths, <String, String>{ 719 manager.setRoots(includedPaths, excludedPaths,
689 projPath: packageRootPath1 720 <String, String>{projPath: packageRootPath1});
690 });
691 _checkPackageRoot(projPath, equals(packageRootPath1)); 721 _checkPackageRoot(projPath, equals(packageRootPath1));
692 manager.setRoots(includedPaths, excludedPaths, <String, String>{ 722 manager.setRoots(includedPaths, excludedPaths,
693 projPath: packageRootPath2 723 <String, String>{projPath: packageRootPath2});
694 });
695 _checkPackageRoot(projPath, equals(packageRootPath2)); 724 _checkPackageRoot(projPath, equals(packageRootPath2));
696 } 725 }
697 726
698 void test_setRoots_exclude_newRoot_withExcludedFile() { 727 void test_setRoots_exclude_newRoot_withExcludedFile() {
699 // prepare paths 728 // prepare paths
700 String project = '/project'; 729 String project = '/project';
701 String file1 = '$project/file1.dart'; 730 String file1 = '$project/file1.dart';
702 String file2 = '$project/file2.dart'; 731 String file2 = '$project/file2.dart';
703 // create files 732 // create files
704 resourceProvider.newFile(file1, '// 1'); 733 resourceProvider.newFile(file1, '// 1');
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 callbacks.assertContextPaths([project]); 843 callbacks.assertContextPaths([project]);
815 callbacks.assertContextFiles(project, [fileA]); 844 callbacks.assertContextFiles(project, [fileA]);
816 // stop excluding "bbb/" 845 // stop excluding "bbb/"
817 manager.setRoots(<String>[project], <String>[], <String, String>{}); 846 manager.setRoots(<String>[project], <String>[], <String, String>{});
818 callbacks.assertContextPaths([project]); 847 callbacks.assertContextPaths([project]);
819 callbacks.assertContextFiles(project, [fileA, fileB]); 848 callbacks.assertContextFiles(project, [fileA, fileB]);
820 } 849 }
821 850
822 void test_setRoots_newFolderWithPackageRoot() { 851 void test_setRoots_newFolderWithPackageRoot() {
823 String packageRootPath = '/package'; 852 String packageRootPath = '/package';
824 manager.setRoots(<String>[projPath], <String>[], <String, String>{ 853 manager.setRoots(<String>[projPath], <String>[],
825 projPath: packageRootPath 854 <String, String>{projPath: packageRootPath});
826 });
827 _checkPackageRoot(projPath, equals(packageRootPath)); 855 _checkPackageRoot(projPath, equals(packageRootPath));
828 } 856 }
829 857
830 void test_setRoots_newlyAddedFoldersGetProperPackageMap() { 858 void test_setRoots_newlyAddedFoldersGetProperPackageMap() {
831 String packagePath = '/package/foo'; 859 String packagePath = '/package/foo';
832 Folder packageFolder = resourceProvider.newFolder(packagePath); 860 Folder packageFolder = resourceProvider.newFolder(packagePath);
833 packageMapProvider.packageMap = {'foo': [packageFolder]}; 861 packageMapProvider.packageMap = {
862 'foo': [packageFolder]
863 };
834 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 864 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
835 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); 865 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
836 } 866 }
837 867
838 void test_setRoots_packageResolver() { 868 void test_setRoots_packageResolver() {
839 Uri uri = Uri.parse('package:foo/foo.dart'); 869 Uri uri = Uri.parse('package:foo/foo.dart');
840 Source source = new TestSource(); 870 Source source = new TestSource();
841 packageResolver = new TestUriResolver({uri: source}); 871 packageResolver = new TestUriResolver({uri: source});
842 String filePath = posix.join(projPath, 'foo.dart'); 872 String filePath = posix.join(projPath, 'foo.dart');
843 resourceProvider.newFile(filePath, 'contents'); 873 resourceProvider.newFile(filePath, 'contents');
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 manager.setRoots(<String>[projectA], <String>[], <String, String>{}); 986 manager.setRoots(<String>[projectA], <String>[], <String, String>{});
957 callbacks.assertContextPaths([projectA, subProjectA]); 987 callbacks.assertContextPaths([projectA, subProjectA]);
958 callbacks.assertContextFiles(projectA, [projectA_file]); 988 callbacks.assertContextFiles(projectA, [projectA_file]);
959 callbacks.assertContextFiles(subProjectA, [subProjectA_file]); 989 callbacks.assertContextFiles(subProjectA, [subProjectA_file]);
960 } 990 }
961 991
962 void test_setRoots_removePackageRoot() { 992 void test_setRoots_removePackageRoot() {
963 String packagePathFoo = '/package1/foo'; 993 String packagePathFoo = '/package1/foo';
964 String packageRootPath = '/package2/foo'; 994 String packageRootPath = '/package2/foo';
965 Folder packageFolder = resourceProvider.newFolder(packagePathFoo); 995 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
966 packageMapProvider.packageMap = {'foo': [packageFolder]}; 996 packageMapProvider.packageMap = {
997 'foo': [packageFolder]
998 };
967 List<String> includedPaths = <String>[projPath]; 999 List<String> includedPaths = <String>[projPath];
968 List<String> excludedPaths = <String>[]; 1000 List<String> excludedPaths = <String>[];
969 manager.setRoots(includedPaths, excludedPaths, <String, String>{ 1001 manager.setRoots(includedPaths, excludedPaths,
970 projPath: packageRootPath 1002 <String, String>{projPath: packageRootPath});
971 });
972 _checkPackageRoot(projPath, equals(packageRootPath)); 1003 _checkPackageRoot(projPath, equals(packageRootPath));
973 manager.setRoots(includedPaths, excludedPaths, <String, String>{}); 1004 manager.setRoots(includedPaths, excludedPaths, <String, String>{});
974 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); 1005 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
975 } 1006 }
976 1007
977 test_watch_addDummyLink() { 1008 test_watch_addDummyLink() {
978 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 1009 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
979 // empty folder initially 1010 // empty folder initially
980 Map<String, int> filePaths = callbacks.currentContextFilePaths[projPath]; 1011 Map<String, int> filePaths = callbacks.currentContextFilePaths[projPath];
981 expect(filePaths, isEmpty); 1012 expect(filePaths, isEmpty);
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 /** 1535 /**
1505 * Map from context to (map from file path to timestamp of last event). 1536 * Map from context to (map from file path to timestamp of last event).
1506 */ 1537 */
1507 final Map<String, Map<String, int>> currentContextFilePaths = 1538 final Map<String, Map<String, int>> currentContextFilePaths =
1508 <String, Map<String, int>>{}; 1539 <String, Map<String, int>>{};
1509 1540
1510 /** 1541 /**
1511 * A map from the paths of contexts to a set of the sources that should be 1542 * A map from the paths of contexts to a set of the sources that should be
1512 * explicitly analyzed in those contexts. 1543 * explicitly analyzed in those contexts.
1513 */ 1544 */
1514 final Map<String, Set<Source>> currentContextSources = <String, Set<Source>>{ 1545 final Map<String, Set<Source>> currentContextSources =
1515 }; 1546 <String, Set<Source>>{};
1516 1547
1517 /** 1548 /**
1518 * Map from context to folder disposition. 1549 * Map from context to folder disposition.
1519 */ 1550 */
1520 final Map<String, FolderDisposition> currentContextDispositions = 1551 final Map<String, FolderDisposition> currentContextDispositions =
1521 <String, FolderDisposition>{}; 1552 <String, FolderDisposition>{};
1522 1553
1523 /** 1554 /**
1524 * Resource provider used for this test. 1555 * Resource provider used for this test.
1525 */ 1556 */
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1624 class TestUriResolver extends UriResolver { 1655 class TestUriResolver extends UriResolver {
1625 Map<Uri, Source> uriMap; 1656 Map<Uri, Source> uriMap;
1626 1657
1627 TestUriResolver(this.uriMap); 1658 TestUriResolver(this.uriMap);
1628 1659
1629 @override 1660 @override
1630 Source resolveAbsolute(Uri uri, [Uri actualUri]) { 1661 Source resolveAbsolute(Uri uri, [Uri actualUri]) {
1631 return uriMap[uri]; 1662 return uriMap[uri];
1632 } 1663 }
1633 } 1664 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/completion_test.dart ('k') | pkg/analysis_server/test/domain_analysis_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698