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

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

Issue 1257913002: Improve package root tests. (Closed) Base URL: git@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
« no previous file with comments | « pkg/analysis_server/lib/src/context_manager.dart ('k') | no next file » | 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) 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 TestContextManagerCallbacks callbacks; 57 TestContextManagerCallbacks callbacks;
58 58
59 MemoryResourceProvider resourceProvider; 59 MemoryResourceProvider resourceProvider;
60 60
61 MockPackageMapProvider packageMapProvider; 61 MockPackageMapProvider packageMapProvider;
62 62
63 UriResolver packageResolver = null; 63 UriResolver packageResolver = null;
64 64
65 String projPath = '/my/proj'; 65 String projPath = '/my/proj';
66 66
67 void fail_test_setRoots_addPackageRoot() {
68 // TODO(paulberry): failing due to dartbug.com/23909.
69 String packagePathFoo = '/package1/foo';
70 String packageRootPath = '/package2/foo';
71 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
72 packageMapProvider.packageMap = {'foo': [packageFolder]};
73 List<String> includedPaths = <String>[projPath];
74 List<String> excludedPaths = <String>[];
75 manager.setRoots(includedPaths, excludedPaths, <String, String>{});
76 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
77 manager.setRoots(includedPaths, excludedPaths, <String, String>{
78 projPath: packageRootPath
79 });
80 _checkPackageRoot(projPath, equals(packageRootPath));
81 }
82
83 void fail_test_setRoots_changePackageRoot() {
84 // TODO(paulberry): failing due to dartbug.com/23909.
85 String packageRootPath1 = '/package1';
86 String packageRootPath2 = '/package2';
87 List<String> includedPaths = <String>[projPath];
88 List<String> excludedPaths = <String>[];
89 manager.setRoots(includedPaths, excludedPaths, <String, String>{
90 projPath: packageRootPath1
91 });
92 _checkPackageRoot(projPath, equals(packageRootPath1));
93 manager.setRoots(includedPaths, excludedPaths, <String, String>{
94 projPath: packageRootPath2
95 });
96 _checkPackageRoot(projPath, equals(packageRootPath2));
97 }
98
99 void fail_test_setRoots_newFolderWithPackageRoot() {
100 // TODO(paulberry): failing due to dartbug.com/23909.
101 String packageRootPath = '/package';
102 manager.setRoots(<String>[projPath], <String>[], <String, String>{
103 projPath: packageRootPath
104 });
105 _checkPackageRoot(projPath, equals(packageRootPath));
106 }
107
108 void fail_test_setRoots_removePackageRoot() {
109 // TODO(paulberry): failing due to dartbug.com/23909.
110 String packagePathFoo = '/package1/foo';
111 String packageRootPath = '/package2/foo';
112 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
113 packageMapProvider.packageMap = {'foo': [packageFolder]};
114 List<String> includedPaths = <String>[projPath];
115 List<String> excludedPaths = <String>[];
116 manager.setRoots(includedPaths, excludedPaths, <String, String>{
117 projPath: packageRootPath
118 });
119 _checkPackageRoot(projPath, equals(packageRootPath));
120 manager.setRoots(includedPaths, excludedPaths, <String, String>{});
121 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
122 }
123
124 String newFile(List<String> pathComponents, [String content = '']) { 67 String newFile(List<String> pathComponents, [String content = '']) {
125 String filePath = posix.joinAll(pathComponents); 68 String filePath = posix.joinAll(pathComponents);
126 resourceProvider.newFile(filePath, content); 69 resourceProvider.newFile(filePath, content);
127 return filePath; 70 return filePath;
128 } 71 }
129 72
130 String newFolder(List<String> pathComponents) { 73 String newFolder(List<String> pathComponents) {
131 String folderPath = posix.joinAll(pathComponents); 74 String folderPath = posix.joinAll(pathComponents);
132 resourceProvider.newFolder(folderPath); 75 resourceProvider.newFolder(folderPath);
133 return folderPath; 76 return folderPath;
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 callbacks.assertContextFiles(subProjectA, [subProjectA_file]); 568 callbacks.assertContextFiles(subProjectA, [subProjectA_file]);
626 callbacks.assertContextFiles(subProjectB, [subProjectB_file]); 569 callbacks.assertContextFiles(subProjectB, [subProjectB_file]);
627 // verify package maps 570 // verify package maps
628 _checkPackageMap(root, isNull); 571 _checkPackageMap(root, isNull);
629 _checkPackageMap( 572 _checkPackageMap(
630 subProjectA, equals(packageMapProvider.packageMaps[subProjectA])); 573 subProjectA, equals(packageMapProvider.packageMaps[subProjectA]));
631 _checkPackageMap( 574 _checkPackageMap(
632 subProjectB, equals(packageMapProvider.packageMaps[subProjectB])); 575 subProjectB, equals(packageMapProvider.packageMaps[subProjectB]));
633 } 576 }
634 577
578 void test_setRoots_addPackageRoot() {
579 String packagePathFoo = '/package1/foo';
580 String packageRootPath = '/package2/foo';
581 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
582 packageMapProvider.packageMap = {'foo': [packageFolder]};
583 List<String> includedPaths = <String>[projPath];
584 List<String> excludedPaths = <String>[];
585 manager.setRoots(includedPaths, excludedPaths, <String, String>{});
586 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
587 manager.setRoots(includedPaths, excludedPaths, <String, String>{
588 projPath: packageRootPath
589 });
590 _checkPackageRoot(projPath, equals(packageRootPath));
591 }
592
593 void test_setRoots_changePackageRoot() {
594 String packageRootPath1 = '/package1';
595 String packageRootPath2 = '/package2';
596 List<String> includedPaths = <String>[projPath];
597 List<String> excludedPaths = <String>[];
598 manager.setRoots(includedPaths, excludedPaths, <String, String>{
599 projPath: packageRootPath1
600 });
601 _checkPackageRoot(projPath, equals(packageRootPath1));
602 manager.setRoots(includedPaths, excludedPaths, <String, String>{
603 projPath: packageRootPath2
604 });
605 _checkPackageRoot(projPath, equals(packageRootPath2));
606 }
607
635 void test_setRoots_exclude_newRoot_withExcludedFile() { 608 void test_setRoots_exclude_newRoot_withExcludedFile() {
636 // prepare paths 609 // prepare paths
637 String project = '/project'; 610 String project = '/project';
638 String file1 = '$project/file1.dart'; 611 String file1 = '$project/file1.dart';
639 String file2 = '$project/file2.dart'; 612 String file2 = '$project/file2.dart';
640 // create files 613 // create files
641 resourceProvider.newFile(file1, '// 1'); 614 resourceProvider.newFile(file1, '// 1');
642 resourceProvider.newFile(file2, '// 2'); 615 resourceProvider.newFile(file2, '// 2');
643 // set roots 616 // set roots
644 manager.setRoots(<String>[project], <String>[file1], <String, String>{}); 617 manager.setRoots(<String>[project], <String>[file1], <String, String>{});
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 // exclude "bbb/" 722 // exclude "bbb/"
750 manager.setRoots(<String>[project], <String>[folderB], <String, String>{}); 723 manager.setRoots(<String>[project], <String>[folderB], <String, String>{});
751 callbacks.assertContextPaths([project]); 724 callbacks.assertContextPaths([project]);
752 callbacks.assertContextFiles(project, [fileA]); 725 callbacks.assertContextFiles(project, [fileA]);
753 // stop excluding "bbb/" 726 // stop excluding "bbb/"
754 manager.setRoots(<String>[project], <String>[], <String, String>{}); 727 manager.setRoots(<String>[project], <String>[], <String, String>{});
755 callbacks.assertContextPaths([project]); 728 callbacks.assertContextPaths([project]);
756 callbacks.assertContextFiles(project, [fileA, fileB]); 729 callbacks.assertContextFiles(project, [fileA, fileB]);
757 } 730 }
758 731
732 void test_setRoots_newFolderWithPackageRoot() {
733 String packageRootPath = '/package';
734 manager.setRoots(<String>[projPath], <String>[], <String, String>{
735 projPath: packageRootPath
736 });
737 _checkPackageRoot(projPath, equals(packageRootPath));
738 }
739
759 void test_setRoots_newlyAddedFoldersGetProperPackageMap() { 740 void test_setRoots_newlyAddedFoldersGetProperPackageMap() {
760 String packagePath = '/package/foo'; 741 String packagePath = '/package/foo';
761 Folder packageFolder = resourceProvider.newFolder(packagePath); 742 Folder packageFolder = resourceProvider.newFolder(packagePath);
762 packageMapProvider.packageMap = {'foo': [packageFolder]}; 743 packageMapProvider.packageMap = {'foo': [packageFolder]};
763 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 744 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
764 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); 745 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
765 } 746 }
766 747
767 void test_setRoots_packageResolver() { 748 void test_setRoots_packageResolver() {
768 Uri uri = Uri.parse('package:foo/foo.dart'); 749 Uri uri = Uri.parse('package:foo/foo.dart');
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 callbacks.assertContextFiles(projectB, [projectB_file]); 862 callbacks.assertContextFiles(projectB, [projectB_file]);
882 callbacks.assertContextFiles(subProjectA, [subProjectA_file]); 863 callbacks.assertContextFiles(subProjectA, [subProjectA_file]);
883 callbacks.assertContextFiles(subProjectB, [subProjectB_file]); 864 callbacks.assertContextFiles(subProjectB, [subProjectB_file]);
884 // remove "projectB" 865 // remove "projectB"
885 manager.setRoots(<String>[projectA], <String>[], <String, String>{}); 866 manager.setRoots(<String>[projectA], <String>[], <String, String>{});
886 callbacks.assertContextPaths([projectA, subProjectA]); 867 callbacks.assertContextPaths([projectA, subProjectA]);
887 callbacks.assertContextFiles(projectA, [projectA_file]); 868 callbacks.assertContextFiles(projectA, [projectA_file]);
888 callbacks.assertContextFiles(subProjectA, [subProjectA_file]); 869 callbacks.assertContextFiles(subProjectA, [subProjectA_file]);
889 } 870 }
890 871
872 void test_setRoots_removePackageRoot() {
873 String packagePathFoo = '/package1/foo';
874 String packageRootPath = '/package2/foo';
875 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
876 packageMapProvider.packageMap = {'foo': [packageFolder]};
877 List<String> includedPaths = <String>[projPath];
878 List<String> excludedPaths = <String>[];
879 manager.setRoots(includedPaths, excludedPaths, <String, String>{
880 projPath: packageRootPath
881 });
882 _checkPackageRoot(projPath, equals(packageRootPath));
883 manager.setRoots(includedPaths, excludedPaths, <String, String>{});
884 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
885 }
886
891 test_watch_addDummyLink() { 887 test_watch_addDummyLink() {
892 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 888 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
893 // empty folder initially 889 // empty folder initially
894 Map<String, int> filePaths = callbacks.currentContextFilePaths[projPath]; 890 Map<String, int> filePaths = callbacks.currentContextFilePaths[projPath];
895 expect(filePaths, isEmpty); 891 expect(filePaths, isEmpty);
896 // add link 892 // add link
897 String filePath = posix.join(projPath, 'foo.dart'); 893 String filePath = posix.join(projPath, 'foo.dart');
898 resourceProvider.newDummyLink(filePath); 894 resourceProvider.newDummyLink(filePath);
899 // the link was ignored 895 // the link was ignored
900 return pumpEventQueue().then((_) { 896 return pumpEventQueue().then((_) {
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 Map<String, List<Folder>> packageMap = 1409 Map<String, List<Folder>> packageMap =
1414 disposition is PackageMapDisposition ? disposition.packageMap : null; 1410 disposition is PackageMapDisposition ? disposition.packageMap : null;
1415 expect(packageMap, expectation); 1411 expect(packageMap, expectation);
1416 } 1412 }
1417 1413
1418 /** 1414 /**
1419 * Verify that package URI's for source files in [path] will be resolved 1415 * Verify that package URI's for source files in [path] will be resolved
1420 * using a package root maching [expectation]. 1416 * using a package root maching [expectation].
1421 */ 1417 */
1422 void _checkPackageRoot(String path, expectation) { 1418 void _checkPackageRoot(String path, expectation) {
1423 // TODO(paulberry): this code needs to be reworked, since the context 1419 FolderDisposition disposition = callbacks.currentContextDispositions[path];
1424 // manager inspects the contents of the package root directory and converts 1420 expect(disposition.packageRoot, expectation);
1425 // it to a package map. The only reason this code used to work was due to 1421 // TODO(paulberry): we should also verify that the package map itself is
1426 // dartbug.com/23909. 1422 // correct. See dartbug.com/23909.
1427 fail('Cannot verify package root');
1428 } 1423 }
1429 } 1424 }
1430 1425
1431 class TestContextManagerCallbacks extends ContextManagerCallbacks { 1426 class TestContextManagerCallbacks extends ContextManagerCallbacks {
1432 /** 1427 /**
1433 * Source of timestamps stored in [currentContextFilePaths]. 1428 * Source of timestamps stored in [currentContextFilePaths].
1434 */ 1429 */
1435 int now = 0; 1430 int now = 0;
1436 1431
1437 /** 1432 /**
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
1567 class TestUriResolver extends UriResolver { 1562 class TestUriResolver extends UriResolver {
1568 Map<Uri, Source> uriMap; 1563 Map<Uri, Source> uriMap;
1569 1564
1570 TestUriResolver(this.uriMap); 1565 TestUriResolver(this.uriMap);
1571 1566
1572 @override 1567 @override
1573 Source resolveAbsolute(Uri uri, [Uri actualUri]) { 1568 Source resolveAbsolute(Uri uri, [Uri actualUri]) {
1574 return uriMap[uri]; 1569 return uriMap[uri];
1575 } 1570 }
1576 } 1571 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/context_manager.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698