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

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

Issue 941883002: cache pub list results (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 5 years, 9 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 | Annotate | Revision Log
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';
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 182
183 void test_setRoots_addFolderWithDummyLink() { 183 void test_setRoots_addFolderWithDummyLink() {
184 String filePath = posix.join(projPath, 'foo.dart'); 184 String filePath = posix.join(projPath, 'foo.dart');
185 resourceProvider.newDummyLink(filePath); 185 resourceProvider.newDummyLink(filePath);
186 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 186 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
187 // verify 187 // verify
188 var filePaths = manager.currentContextFilePaths[projPath]; 188 var filePaths = manager.currentContextFilePaths[projPath];
189 expect(filePaths, isEmpty); 189 expect(filePaths, isEmpty);
190 } 190 }
191 191
192 void test_setRoots_addFolderWithoutPubspec() {
193 packageMapProvider.packageMap = null;
194 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
195 // verify
196 expect(manager.currentContextPaths, hasLength(1));
197 expect(manager.currentContextPaths, contains(projPath));
198 expect(manager.currentContextFilePaths[projPath], hasLength(0));
199 }
200
192 void test_setRoots_addFolderWithPubspec() { 201 void test_setRoots_addFolderWithPubspec() {
193 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); 202 String pubspecPath = posix.join(projPath, 'pubspec.yaml');
194 resourceProvider.newFile(pubspecPath, 'pubspec'); 203 resourceProvider.newFile(pubspecPath, 'pubspec');
195 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 204 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
196 // verify 205 // verify
197 expect(manager.currentContextPaths, hasLength(1)); 206 expect(manager.currentContextPaths, hasLength(1));
198 expect(manager.currentContextPaths, contains(projPath)); 207 expect(manager.currentContextPaths, contains(projPath));
199 expect(manager.currentContextFilePaths[projPath], hasLength(0)); 208 expect(manager.currentContextFilePaths[projPath], hasLength(0));
200 } 209 }
201 210
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 // verify package maps 270 // verify package maps
262 _checkPackageMap(root, isNull); 271 _checkPackageMap(root, isNull);
263 _checkPackageMap( 272 _checkPackageMap(
264 subProjectA, 273 subProjectA,
265 equals(packageMapProvider.packageMaps[subProjectA])); 274 equals(packageMapProvider.packageMaps[subProjectA]));
266 _checkPackageMap( 275 _checkPackageMap(
267 subProjectB, 276 subProjectB,
268 equals(packageMapProvider.packageMaps[subProjectB])); 277 equals(packageMapProvider.packageMaps[subProjectB]));
269 } 278 }
270 279
271 void test_setRoots_addFolderWithoutPubspec() {
272 packageMapProvider.packageMap = null;
273 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
274 // verify
275 expect(manager.currentContextPaths, hasLength(1));
276 expect(manager.currentContextPaths, contains(projPath));
277 expect(manager.currentContextFilePaths[projPath], hasLength(0));
278 }
279
280 void test_setRoots_addPackageRoot() { 280 void test_setRoots_addPackageRoot() {
281 String packagePathFoo = '/package1/foo'; 281 String packagePathFoo = '/package1/foo';
282 String packageRootPath = '/package2/foo'; 282 String packageRootPath = '/package2/foo';
283 Folder packageFolder = resourceProvider.newFolder(packagePathFoo); 283 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
284 packageMapProvider.packageMap = { 284 packageMapProvider.packageMap = {
285 'foo': [packageFolder] 285 'foo': [packageFolder]
286 }; 286 };
287 List<String> includedPaths = <String>[projPath]; 287 List<String> includedPaths = <String>[projPath];
288 List<String> excludedPaths = <String>[]; 288 List<String> excludedPaths = <String>[];
289 manager.setRoots(includedPaths, excludedPaths, <String, String>{}); 289 manager.setRoots(includedPaths, excludedPaths, <String, String>{});
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 void test_setRoots_newlyAddedFoldersGetProperPackageMap() { 464 void test_setRoots_newlyAddedFoldersGetProperPackageMap() {
465 String packagePath = '/package/foo'; 465 String packagePath = '/package/foo';
466 Folder packageFolder = resourceProvider.newFolder(packagePath); 466 Folder packageFolder = resourceProvider.newFolder(packagePath);
467 packageMapProvider.packageMap = { 467 packageMapProvider.packageMap = {
468 'foo': [packageFolder] 468 'foo': [packageFolder]
469 }; 469 };
470 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 470 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
471 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); 471 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
472 } 472 }
473 473
474 void test_setRoots_removeFolderWithoutPubspec() {
475 packageMapProvider.packageMap = null;
476 // add one root - there is a context
477 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
478 expect(manager.currentContextPaths, hasLength(1));
479 // set empty roots - no contexts
480 manager.setRoots(<String>[], <String>[], <String, String>{});
481 expect(manager.currentContextPaths, hasLength(0));
482 expect(manager.currentContextFilePaths, hasLength(0));
483 }
484
474 void test_setRoots_removeFolderWithPubspec() { 485 void test_setRoots_removeFolderWithPubspec() {
475 // create a pubspec 486 // create a pubspec
476 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); 487 String pubspecPath = posix.join(projPath, 'pubspec.yaml');
477 resourceProvider.newFile(pubspecPath, 'pubspec'); 488 resourceProvider.newFile(pubspecPath, 'pubspec');
478 // add one root - there is a context 489 // add one root - there is a context
479 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 490 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
480 expect(manager.currentContextPaths, hasLength(1)); 491 expect(manager.currentContextPaths, hasLength(1));
481 // set empty roots - no contexts 492 // set empty roots - no contexts
482 manager.setRoots(<String>[], <String>[], <String, String>{}); 493 manager.setRoots(<String>[], <String>[], <String, String>{});
483 expect(manager.currentContextPaths, hasLength(0)); 494 expect(manager.currentContextPaths, hasLength(0));
(...skipping 29 matching lines...) Expand all
513 manager.assertContextFiles(projectB, [projectB_file]); 524 manager.assertContextFiles(projectB, [projectB_file]);
514 manager.assertContextFiles(subProjectA, [subProjectA_file]); 525 manager.assertContextFiles(subProjectA, [subProjectA_file]);
515 manager.assertContextFiles(subProjectB, [subProjectB_file]); 526 manager.assertContextFiles(subProjectB, [subProjectB_file]);
516 // remove "projectB" 527 // remove "projectB"
517 manager.setRoots(<String>[projectA], <String>[], <String, String>{}); 528 manager.setRoots(<String>[projectA], <String>[], <String, String>{});
518 manager.assertContextPaths([projectA, subProjectA]); 529 manager.assertContextPaths([projectA, subProjectA]);
519 manager.assertContextFiles(projectA, [projectA_file]); 530 manager.assertContextFiles(projectA, [projectA_file]);
520 manager.assertContextFiles(subProjectA, [subProjectA_file]); 531 manager.assertContextFiles(subProjectA, [subProjectA_file]);
521 } 532 }
522 533
523 void test_setRoots_removeFolderWithoutPubspec() {
524 packageMapProvider.packageMap = null;
525 // add one root - there is a context
526 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
527 expect(manager.currentContextPaths, hasLength(1));
528 // set empty roots - no contexts
529 manager.setRoots(<String>[], <String>[], <String, String>{});
530 expect(manager.currentContextPaths, hasLength(0));
531 expect(manager.currentContextFilePaths, hasLength(0));
532 }
533
534 void test_setRoots_removePackageRoot() { 534 void test_setRoots_removePackageRoot() {
535 String packagePathFoo = '/package1/foo'; 535 String packagePathFoo = '/package1/foo';
536 String packageRootPath = '/package2/foo'; 536 String packageRootPath = '/package2/foo';
537 Folder packageFolder = resourceProvider.newFolder(packagePathFoo); 537 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
538 packageMapProvider.packageMap = { 538 packageMapProvider.packageMap = {
539 'foo': [packageFolder] 539 'foo': [packageFolder]
540 }; 540 };
541 List<String> includedPaths = <String>[projPath]; 541 List<String> includedPaths = <String>[projPath];
542 List<String> excludedPaths = <String>[]; 542 List<String> excludedPaths = <String>[];
543 manager.setRoots(includedPaths, excludedPaths, <String, String>{ 543 manager.setRoots(includedPaths, excludedPaths, <String, String>{
(...skipping 26 matching lines...) Expand all
570 // add file 570 // add file
571 String filePath = posix.join(projPath, 'foo.dart'); 571 String filePath = posix.join(projPath, 'foo.dart');
572 resourceProvider.newFile(filePath, 'contents'); 572 resourceProvider.newFile(filePath, 'contents');
573 // the file was added 573 // the file was added
574 return pumpEventQueue().then((_) { 574 return pumpEventQueue().then((_) {
575 expect(filePaths, hasLength(1)); 575 expect(filePaths, hasLength(1));
576 expect(filePaths, contains(filePath)); 576 expect(filePaths, contains(filePath));
577 }); 577 });
578 } 578 }
579 579
580 test_watch_addFileInSubfolder() {
581 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
582 // empty folder initially
583 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
584 expect(filePaths, hasLength(0));
585 // add file in subfolder
586 String filePath = posix.join(projPath, 'foo', 'bar.dart');
587 resourceProvider.newFile(filePath, 'contents');
588 // the file was added
589 return pumpEventQueue().then((_) {
590 expect(filePaths, hasLength(1));
591 expect(filePaths, contains(filePath));
592 });
593 }
594
595 test_watch_addFile_excluded() { 580 test_watch_addFile_excluded() {
596 // prepare paths 581 // prepare paths
597 String project = '/project'; 582 String project = '/project';
598 String folderA = '$project/aaa'; 583 String folderA = '$project/aaa';
599 String folderB = '$project/bbb'; 584 String folderB = '$project/bbb';
600 String fileA = '$folderA/a.dart'; 585 String fileA = '$folderA/a.dart';
601 String fileB = '$folderB/b.dart'; 586 String fileB = '$folderB/b.dart';
602 // create files 587 // create files
603 resourceProvider.newFile(fileA, 'library a;'); 588 resourceProvider.newFile(fileA, 'library a;');
604 // set roots 589 // set roots
605 manager.setRoots(<String>[project], <String>[folderB], <String, String>{}); 590 manager.setRoots(<String>[project], <String>[folderB], <String, String>{});
606 manager.assertContextPaths([project]); 591 manager.assertContextPaths([project]);
607 manager.assertContextFiles(project, [fileA]); 592 manager.assertContextFiles(project, [fileA]);
608 // add a file, ignored as excluded 593 // add a file, ignored as excluded
609 resourceProvider.newFile(fileB, 'library b;'); 594 resourceProvider.newFile(fileB, 'library b;');
610 return pumpEventQueue().then((_) { 595 return pumpEventQueue().then((_) {
611 manager.assertContextPaths([project]); 596 manager.assertContextPaths([project]);
612 manager.assertContextFiles(project, [fileA]); 597 manager.assertContextFiles(project, [fileA]);
613 }); 598 });
614 } 599 }
615 600
601 test_watch_addFileInSubfolder() {
602 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
603 // empty folder initially
604 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
605 expect(filePaths, hasLength(0));
606 // add file in subfolder
607 String filePath = posix.join(projPath, 'foo', 'bar.dart');
608 resourceProvider.newFile(filePath, 'contents');
609 // the file was added
610 return pumpEventQueue().then((_) {
611 expect(filePaths, hasLength(1));
612 expect(filePaths, contains(filePath));
613 });
614 }
615
616 test_watch_addPubspec_toRoot() { 616 test_watch_addPubspec_toRoot() {
617 // prepare paths 617 // prepare paths
618 String root = '/root'; 618 String root = '/root';
619 String rootFile = '$root/root.dart'; 619 String rootFile = '$root/root.dart';
620 String rootPubspec = '$root/pubspec.yaml'; 620 String rootPubspec = '$root/pubspec.yaml';
621 // create files 621 // create files
622 resourceProvider.newFile(rootFile, 'library root;'); 622 resourceProvider.newFile(rootFile, 'library root;');
623 // set roots 623 // set roots
624 manager.setRoots(<String>[root], <String>[], <String, String>{}); 624 manager.setRoots(<String>[root], <String>[], <String, String>{});
625 manager.assertContextPaths([root]); 625 manager.assertContextPaths([root]);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 return pumpEventQueue().then((_) { 679 return pumpEventQueue().then((_) {
680 manager.assertContextPaths([root, subProject]); 680 manager.assertContextPaths([root, subProject]);
681 manager.assertContextFiles(root, [rootFile]); 681 manager.assertContextFiles(root, [rootFile]);
682 manager.assertContextFiles(subProject, [subFile]); 682 manager.assertContextFiles(subProject, [subFile]);
683 }); 683 });
684 } 684 }
685 685
686 test_watch_deleteFile() { 686 test_watch_deleteFile() {
687 String filePath = posix.join(projPath, 'foo.dart'); 687 String filePath = posix.join(projPath, 'foo.dart');
688 // add root with a file 688 // add root with a file
689 resourceProvider.newFile(filePath, 'contents'); 689 File file = resourceProvider.newFile(filePath, 'contents');
690 Folder projFolder = file.parent;
690 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 691 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
691 // the file was added 692 // the file was added
692 Map<String, int> filePaths = manager.currentContextFilePaths[projPath]; 693 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
693 expect(filePaths, hasLength(1)); 694 expect(filePaths, hasLength(1));
694 expect(filePaths, contains(filePath)); 695 expect(filePaths, contains(filePath));
696 expect(file.exists, isTrue);
697 expect(projFolder.exists, isTrue);
695 // delete the file 698 // delete the file
696 resourceProvider.deleteFile(filePath); 699 resourceProvider.deleteFile(filePath);
697 return pumpEventQueue().then((_) { 700 return pumpEventQueue().then((_) {
701 expect(file.exists, isFalse);
702 expect(projFolder.exists, isTrue);
698 return expect(filePaths, hasLength(0)); 703 return expect(filePaths, hasLength(0));
699 }); 704 });
700 } 705 }
706
707 test_watch_deleteFolder() {
708 String filePath = posix.join(projPath, 'foo.dart');
709 // add root with a file
710 File file = resourceProvider.newFile(filePath, 'contents');
711 Folder projFolder = file.parent;
712 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
713 // the file was added
714 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
715 expect(filePaths, hasLength(1));
716 expect(filePaths, contains(filePath));
717 expect(file.exists, isTrue);
718 expect(projFolder.exists, isTrue);
719 // delete the folder
720 resourceProvider.deleteFolder(projPath);
721 return pumpEventQueue().then((_) {
722 expect(file.exists, isFalse);
723 expect(projFolder.exists, isFalse);
724 return expect(filePaths, hasLength(0));
725 });
726 }
701 727
702 test_watch_deletePubspec_fromRoot() { 728 test_watch_deletePubspec_fromRoot() {
703 // prepare paths 729 // prepare paths
704 String root = '/root'; 730 String root = '/root';
705 String rootPubspec = '$root/pubspec.yaml'; 731 String rootPubspec = '$root/pubspec.yaml';
706 String rootFile = '$root/root.dart'; 732 String rootFile = '$root/root.dart';
707 // create files 733 // create files
708 resourceProvider.newFile(rootPubspec, 'pubspec'); 734 resourceProvider.newFile(rootPubspec, 'pubspec');
709 resourceProvider.newFile(rootFile, 'library root;'); 735 resourceProvider.newFile(rootFile, 'library root;');
710 // set roots 736 // set roots
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 currentContextSources.remove(path); 955 currentContextSources.remove(path);
930 currentContextPackageUriResolvers.remove(path); 956 currentContextPackageUriResolvers.remove(path);
931 } 957 }
932 958
933 @override 959 @override
934 void updateContextPackageUriResolver(Folder contextFolder, 960 void updateContextPackageUriResolver(Folder contextFolder,
935 UriResolver packageUriResolver) { 961 UriResolver packageUriResolver) {
936 currentContextPackageUriResolvers[contextFolder.path] = packageUriResolver; 962 currentContextPackageUriResolvers[contextFolder.path] = packageUriResolver;
937 } 963 }
938 } 964 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698