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

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

Issue 956103002: Add instrumentation (issue 22572) (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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';
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/source/package_map_provider.dart'; 13 import 'package:analyzer/source/package_map_provider.dart';
13 import 'package:analyzer/source/package_map_resolver.dart'; 14 import 'package:analyzer/source/package_map_resolver.dart';
14 import 'package:analyzer/src/generated/engine.dart'; 15 import 'package:analyzer/src/generated/engine.dart';
15 import 'package:analyzer/src/generated/source.dart'; 16 import 'package:analyzer/src/generated/source.dart';
16 import 'package:analyzer/src/generated/source_io.dart'; 17 import 'package:analyzer/src/generated/source_io.dart';
17 import 'package:path/path.dart'; 18 import 'package:path/path.dart';
18 import 'package:unittest/unittest.dart'; 19 import 'package:unittest/unittest.dart';
19 20
20 import 'mocks.dart'; 21 import 'mocks.dart';
21 import 'reflective_tests.dart'; 22 import 'reflective_tests.dart';
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 183
183 void test_setRoots_addFolderWithDummyLink() { 184 void test_setRoots_addFolderWithDummyLink() {
184 String filePath = posix.join(projPath, 'foo.dart'); 185 String filePath = posix.join(projPath, 'foo.dart');
185 resourceProvider.newDummyLink(filePath); 186 resourceProvider.newDummyLink(filePath);
186 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 187 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
187 // verify 188 // verify
188 var filePaths = manager.currentContextFilePaths[projPath]; 189 var filePaths = manager.currentContextFilePaths[projPath];
189 expect(filePaths, isEmpty); 190 expect(filePaths, isEmpty);
190 } 191 }
191 192
193 void test_setRoots_addFolderWithoutPubspec() {
194 packageMapProvider.packageMap = null;
195 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
196 // verify
197 expect(manager.currentContextPaths, hasLength(1));
198 expect(manager.currentContextPaths, contains(projPath));
199 expect(manager.currentContextFilePaths[projPath], hasLength(0));
200 }
201
192 void test_setRoots_addFolderWithPubspec() { 202 void test_setRoots_addFolderWithPubspec() {
193 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); 203 String pubspecPath = posix.join(projPath, 'pubspec.yaml');
194 resourceProvider.newFile(pubspecPath, 'pubspec'); 204 resourceProvider.newFile(pubspecPath, 'pubspec');
195 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 205 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
196 // verify 206 // verify
197 expect(manager.currentContextPaths, hasLength(1)); 207 expect(manager.currentContextPaths, hasLength(1));
198 expect(manager.currentContextPaths, contains(projPath)); 208 expect(manager.currentContextPaths, contains(projPath));
199 expect(manager.currentContextFilePaths[projPath], hasLength(0)); 209 expect(manager.currentContextFilePaths[projPath], hasLength(0));
200 } 210 }
201 211
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 // verify package maps 271 // verify package maps
262 _checkPackageMap(root, isNull); 272 _checkPackageMap(root, isNull);
263 _checkPackageMap( 273 _checkPackageMap(
264 subProjectA, 274 subProjectA,
265 equals(packageMapProvider.packageMaps[subProjectA])); 275 equals(packageMapProvider.packageMaps[subProjectA]));
266 _checkPackageMap( 276 _checkPackageMap(
267 subProjectB, 277 subProjectB,
268 equals(packageMapProvider.packageMaps[subProjectB])); 278 equals(packageMapProvider.packageMaps[subProjectB]));
269 } 279 }
270 280
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() { 281 void test_setRoots_addPackageRoot() {
281 String packagePathFoo = '/package1/foo'; 282 String packagePathFoo = '/package1/foo';
282 String packageRootPath = '/package2/foo'; 283 String packageRootPath = '/package2/foo';
283 Folder packageFolder = resourceProvider.newFolder(packagePathFoo); 284 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
284 packageMapProvider.packageMap = { 285 packageMapProvider.packageMap = {
285 'foo': [packageFolder] 286 'foo': [packageFolder]
286 }; 287 };
287 List<String> includedPaths = <String>[projPath]; 288 List<String> includedPaths = <String>[projPath];
288 List<String> excludedPaths = <String>[]; 289 List<String> excludedPaths = <String>[];
289 manager.setRoots(includedPaths, excludedPaths, <String, String>{}); 290 manager.setRoots(includedPaths, excludedPaths, <String, String>{});
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 void test_setRoots_newlyAddedFoldersGetProperPackageMap() { 465 void test_setRoots_newlyAddedFoldersGetProperPackageMap() {
465 String packagePath = '/package/foo'; 466 String packagePath = '/package/foo';
466 Folder packageFolder = resourceProvider.newFolder(packagePath); 467 Folder packageFolder = resourceProvider.newFolder(packagePath);
467 packageMapProvider.packageMap = { 468 packageMapProvider.packageMap = {
468 'foo': [packageFolder] 469 'foo': [packageFolder]
469 }; 470 };
470 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 471 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
471 _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); 472 _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
472 } 473 }
473 474
475 void test_setRoots_removeFolderWithoutPubspec() {
476 packageMapProvider.packageMap = null;
477 // add one root - there is a context
478 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
479 expect(manager.currentContextPaths, hasLength(1));
480 // set empty roots - no contexts
481 manager.setRoots(<String>[], <String>[], <String, String>{});
482 expect(manager.currentContextPaths, hasLength(0));
483 expect(manager.currentContextFilePaths, hasLength(0));
484 }
485
474 void test_setRoots_removeFolderWithPubspec() { 486 void test_setRoots_removeFolderWithPubspec() {
475 // create a pubspec 487 // create a pubspec
476 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); 488 String pubspecPath = posix.join(projPath, 'pubspec.yaml');
477 resourceProvider.newFile(pubspecPath, 'pubspec'); 489 resourceProvider.newFile(pubspecPath, 'pubspec');
478 // add one root - there is a context 490 // add one root - there is a context
479 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 491 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
480 expect(manager.currentContextPaths, hasLength(1)); 492 expect(manager.currentContextPaths, hasLength(1));
481 // set empty roots - no contexts 493 // set empty roots - no contexts
482 manager.setRoots(<String>[], <String>[], <String, String>{}); 494 manager.setRoots(<String>[], <String>[], <String, String>{});
483 expect(manager.currentContextPaths, hasLength(0)); 495 expect(manager.currentContextPaths, hasLength(0));
(...skipping 29 matching lines...) Expand all
513 manager.assertContextFiles(projectB, [projectB_file]); 525 manager.assertContextFiles(projectB, [projectB_file]);
514 manager.assertContextFiles(subProjectA, [subProjectA_file]); 526 manager.assertContextFiles(subProjectA, [subProjectA_file]);
515 manager.assertContextFiles(subProjectB, [subProjectB_file]); 527 manager.assertContextFiles(subProjectB, [subProjectB_file]);
516 // remove "projectB" 528 // remove "projectB"
517 manager.setRoots(<String>[projectA], <String>[], <String, String>{}); 529 manager.setRoots(<String>[projectA], <String>[], <String, String>{});
518 manager.assertContextPaths([projectA, subProjectA]); 530 manager.assertContextPaths([projectA, subProjectA]);
519 manager.assertContextFiles(projectA, [projectA_file]); 531 manager.assertContextFiles(projectA, [projectA_file]);
520 manager.assertContextFiles(subProjectA, [subProjectA_file]); 532 manager.assertContextFiles(subProjectA, [subProjectA_file]);
521 } 533 }
522 534
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() { 535 void test_setRoots_removePackageRoot() {
535 String packagePathFoo = '/package1/foo'; 536 String packagePathFoo = '/package1/foo';
536 String packageRootPath = '/package2/foo'; 537 String packageRootPath = '/package2/foo';
537 Folder packageFolder = resourceProvider.newFolder(packagePathFoo); 538 Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
538 packageMapProvider.packageMap = { 539 packageMapProvider.packageMap = {
539 'foo': [packageFolder] 540 'foo': [packageFolder]
540 }; 541 };
541 List<String> includedPaths = <String>[projPath]; 542 List<String> includedPaths = <String>[projPath];
542 List<String> excludedPaths = <String>[]; 543 List<String> excludedPaths = <String>[];
543 manager.setRoots(includedPaths, excludedPaths, <String, String>{ 544 manager.setRoots(includedPaths, excludedPaths, <String, String>{
(...skipping 26 matching lines...) Expand all
570 // add file 571 // add file
571 String filePath = posix.join(projPath, 'foo.dart'); 572 String filePath = posix.join(projPath, 'foo.dart');
572 resourceProvider.newFile(filePath, 'contents'); 573 resourceProvider.newFile(filePath, 'contents');
573 // the file was added 574 // the file was added
574 return pumpEventQueue().then((_) { 575 return pumpEventQueue().then((_) {
575 expect(filePaths, hasLength(1)); 576 expect(filePaths, hasLength(1));
576 expect(filePaths, contains(filePath)); 577 expect(filePaths, contains(filePath));
577 }); 578 });
578 } 579 }
579 580
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() { 581 test_watch_addFile_excluded() {
596 // prepare paths 582 // prepare paths
597 String project = '/project'; 583 String project = '/project';
598 String folderA = '$project/aaa'; 584 String folderA = '$project/aaa';
599 String folderB = '$project/bbb'; 585 String folderB = '$project/bbb';
600 String fileA = '$folderA/a.dart'; 586 String fileA = '$folderA/a.dart';
601 String fileB = '$folderB/b.dart'; 587 String fileB = '$folderB/b.dart';
602 // create files 588 // create files
603 resourceProvider.newFile(fileA, 'library a;'); 589 resourceProvider.newFile(fileA, 'library a;');
604 // set roots 590 // set roots
605 manager.setRoots(<String>[project], <String>[folderB], <String, String>{}); 591 manager.setRoots(<String>[project], <String>[folderB], <String, String>{});
606 manager.assertContextPaths([project]); 592 manager.assertContextPaths([project]);
607 manager.assertContextFiles(project, [fileA]); 593 manager.assertContextFiles(project, [fileA]);
608 // add a file, ignored as excluded 594 // add a file, ignored as excluded
609 resourceProvider.newFile(fileB, 'library b;'); 595 resourceProvider.newFile(fileB, 'library b;');
610 return pumpEventQueue().then((_) { 596 return pumpEventQueue().then((_) {
611 manager.assertContextPaths([project]); 597 manager.assertContextPaths([project]);
612 manager.assertContextFiles(project, [fileA]); 598 manager.assertContextFiles(project, [fileA]);
613 }); 599 });
614 } 600 }
615 601
602 test_watch_addFileInSubfolder() {
603 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
604 // empty folder initially
605 Map<String, int> filePaths = manager.currentContextFilePaths[projPath];
606 expect(filePaths, hasLength(0));
607 // add file in subfolder
608 String filePath = posix.join(projPath, 'foo', 'bar.dart');
609 resourceProvider.newFile(filePath, 'contents');
610 // the file was added
611 return pumpEventQueue().then((_) {
612 expect(filePaths, hasLength(1));
613 expect(filePaths, contains(filePath));
614 });
615 }
616
616 test_watch_addPubspec_toRoot() { 617 test_watch_addPubspec_toRoot() {
617 // prepare paths 618 // prepare paths
618 String root = '/root'; 619 String root = '/root';
619 String rootFile = '$root/root.dart'; 620 String rootFile = '$root/root.dart';
620 String rootPubspec = '$root/pubspec.yaml'; 621 String rootPubspec = '$root/pubspec.yaml';
621 // create files 622 // create files
622 resourceProvider.newFile(rootFile, 'library root;'); 623 resourceProvider.newFile(rootFile, 'library root;');
623 // set roots 624 // set roots
624 manager.setRoots(<String>[root], <String>[], <String, String>{}); 625 manager.setRoots(<String>[root], <String>[], <String, String>{});
625 manager.assertContextPaths([root]); 626 manager.assertContextPaths([root]);
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 Set<Source>>{}; 863 Set<Source>>{};
863 864
864 /** 865 /**
865 * Map from context to package URI resolver. 866 * Map from context to package URI resolver.
866 */ 867 */
867 final Map<String, UriResolver> currentContextPackageUriResolvers = <String, 868 final Map<String, UriResolver> currentContextPackageUriResolvers = <String,
868 UriResolver>{}; 869 UriResolver>{};
869 870
870 TestContextManager(MemoryResourceProvider resourceProvider, 871 TestContextManager(MemoryResourceProvider resourceProvider,
871 PackageMapProvider packageMapProvider) 872 PackageMapProvider packageMapProvider)
872 : super(resourceProvider, packageMapProvider); 873 : super(
874 resourceProvider,
875 packageMapProvider,
876 InstrumentationService.NULL_SERVICE);
873 877
874 /** 878 /**
875 * Iterable of the paths to contexts that currently exist. 879 * Iterable of the paths to contexts that currently exist.
876 */ 880 */
877 Iterable<String> get currentContextPaths => currentContextTimestamps.keys; 881 Iterable<String> get currentContextPaths => currentContextTimestamps.keys;
878 882
879 @override 883 @override
880 AnalysisContext addContext(Folder folder, UriResolver packageUriResolver) { 884 AnalysisContext addContext(Folder folder, UriResolver packageUriResolver) {
881 String path = folder.path; 885 String path = folder.path;
882 expect(currentContextPaths, isNot(contains(path))); 886 expect(currentContextPaths, isNot(contains(path)));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 currentContextSources.remove(path); 933 currentContextSources.remove(path);
930 currentContextPackageUriResolvers.remove(path); 934 currentContextPackageUriResolvers.remove(path);
931 } 935 }
932 936
933 @override 937 @override
934 void updateContextPackageUriResolver(Folder contextFolder, 938 void updateContextPackageUriResolver(Folder contextFolder,
935 UriResolver packageUriResolver) { 939 UriResolver packageUriResolver) {
936 currentContextPackageUriResolvers[contextFolder.path] = packageUriResolver; 940 currentContextPackageUriResolvers[contextFolder.path] = packageUriResolver;
937 } 941 }
938 } 942 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/context_manager.dart ('k') | pkg/analyzer/lib/instrumentation/instrumentation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698