| OLD | NEW |
| 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 callbacks = new TestContextManagerCallbacks(resourceProvider); | 89 callbacks = new TestContextManagerCallbacks(resourceProvider); |
| 90 manager.callbacks = callbacks; | 90 manager.callbacks = callbacks; |
| 91 resourceProvider.newFolder(projPath); | 91 resourceProvider.newFolder(projPath); |
| 92 ContextManagerImpl.ENABLE_PACKAGESPEC_SUPPORT = true; | 92 ContextManagerImpl.ENABLE_PACKAGESPEC_SUPPORT = true; |
| 93 } | 93 } |
| 94 | 94 |
| 95 void tearDown() { | 95 void tearDown() { |
| 96 ContextManagerImpl.ENABLE_PACKAGESPEC_SUPPORT = false; | 96 ContextManagerImpl.ENABLE_PACKAGESPEC_SUPPORT = false; |
| 97 } | 97 } |
| 98 | 98 |
| 99 test_analysis_options_parse_failure() async { |
| 100 // Create files. |
| 101 String libPath = newFolder([projPath, LIB_NAME]); |
| 102 newFile([libPath, 'main.dart']); |
| 103 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
| 104 newFile([sdkExtPath, 'entry.dart']); |
| 105 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
| 106 newFile([sdkExtSrcPath, 'part.dart']); |
| 107 // Setup analysis options file with ignore list. |
| 108 newFile( |
| 109 [projPath, '.analysis_options'], |
| 110 r''' |
| 111 ; |
| 112 '''); |
| 113 // Setup context. |
| 114 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 115 |
| 116 // No error means success. |
| 117 } |
| 118 |
| 99 void test_contextsInAnalysisRoot_nestedContext() { | 119 void test_contextsInAnalysisRoot_nestedContext() { |
| 100 String subProjPath = posix.join(projPath, 'subproj'); | 120 String subProjPath = posix.join(projPath, 'subproj'); |
| 101 Folder subProjFolder = resourceProvider.newFolder(subProjPath); | 121 Folder subProjFolder = resourceProvider.newFolder(subProjPath); |
| 102 resourceProvider.newFile( | 122 resourceProvider.newFile( |
| 103 posix.join(subProjPath, 'pubspec.yaml'), 'contents'); | 123 posix.join(subProjPath, 'pubspec.yaml'), 'contents'); |
| 104 String subProjFilePath = posix.join(subProjPath, 'file.dart'); | 124 String subProjFilePath = posix.join(subProjPath, 'file.dart'); |
| 105 resourceProvider.newFile(subProjFilePath, 'contents'); | 125 resourceProvider.newFile(subProjFilePath, 'contents'); |
| 106 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 126 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 107 // Make sure that there really are contexts for both the main project and | 127 // Make sure that there really are contexts for both the main project and |
| 108 // the subproject. | 128 // the subproject. |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 var contexts = | 360 var contexts = |
| 341 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath)); | 361 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath)); |
| 342 expect(contexts.length, 2); | 362 expect(contexts.length, 2); |
| 343 expect(contexts[0].name, equals('/my/proj')); | 363 expect(contexts[0].name, equals('/my/proj')); |
| 344 expect(contexts[1].name, equals('/my/proj/lib')); | 364 expect(contexts[1].name, equals('/my/proj/lib')); |
| 345 } | 365 } |
| 346 | 366 |
| 347 // TODO(paulberry): This test only tests PackagesFileDisposition. | 367 // TODO(paulberry): This test only tests PackagesFileDisposition. |
| 348 // Once http://dartbug.com/23909 is fixed, add a test for sdk extensions | 368 // Once http://dartbug.com/23909 is fixed, add a test for sdk extensions |
| 349 // and PackageMapDisposition. | 369 // and PackageMapDisposition. |
| 350 test_sdk_ext_packagespec() async { | |
| 351 // Create files. | |
| 352 String libPath = newFolder([projPath, LIB_NAME]); | |
| 353 newFile([libPath, 'main.dart']); | |
| 354 newFile([libPath, 'nope.dart']); | |
| 355 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | |
| 356 newFile([sdkExtPath, 'entry.dart']); | |
| 357 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | |
| 358 newFile([sdkExtSrcPath, 'part.dart']); | |
| 359 // Setup sdk extension mapping. | |
| 360 newFile( | |
| 361 [libPath, '_sdkext'], | |
| 362 r''' | |
| 363 { | |
| 364 "dart:foobar": "../sdk_ext/entry.dart" | |
| 365 } | |
| 366 '''); | |
| 367 // Setup .packages file | |
| 368 newFile( | |
| 369 [projPath, '.packages'], | |
| 370 r''' | |
| 371 test_pack:lib/ | |
| 372 '''); | |
| 373 // Setup context. | |
| 374 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | |
| 375 // Confirm that one context was created. | |
| 376 var contexts = | |
| 377 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath)); | |
| 378 expect(contexts, isNotNull); | |
| 379 expect(contexts.length, equals(1)); | |
| 380 var context = contexts[0]; | |
| 381 var source = context.sourceFactory.forUri('dart:foobar'); | |
| 382 expect(source.fullName, equals('/my/proj/sdk_ext/entry.dart')); | |
| 383 } | |
| 384 | |
| 385 test_refresh_folder_with_packagespec() { | 370 test_refresh_folder_with_packagespec() { |
| 386 // create a context with a .packages file | 371 // create a context with a .packages file |
| 387 String packagespecFile = posix.join(projPath, '.packages'); | 372 String packagespecFile = posix.join(projPath, '.packages'); |
| 388 resourceProvider.newFile(packagespecFile, ''); | 373 resourceProvider.newFile(packagespecFile, ''); |
| 389 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 374 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 390 return pumpEventQueue().then((_) { | 375 return pumpEventQueue().then((_) { |
| 391 expect(callbacks.currentContextPaths.toList(), [projPath]); | 376 expect(callbacks.currentContextPaths.toList(), [projPath]); |
| 392 callbacks.now++; | 377 callbacks.now++; |
| 393 manager.refresh(null); | 378 manager.refresh(null); |
| 394 return pumpEventQueue().then((_) { | 379 return pumpEventQueue().then((_) { |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 callbacks.now++; | 467 callbacks.now++; |
| 483 manager.refresh([resourceProvider.getResource(proj2Path)]); | 468 manager.refresh([resourceProvider.getResource(proj2Path)]); |
| 484 return pumpEventQueue().then((_) { | 469 return pumpEventQueue().then((_) { |
| 485 expect(callbacks.currentContextPaths.toList(), unorderedEquals(roots)); | 470 expect(callbacks.currentContextPaths.toList(), unorderedEquals(roots)); |
| 486 expect(callbacks.currentContextTimestamps[projPath], then); | 471 expect(callbacks.currentContextTimestamps[projPath], then); |
| 487 expect(callbacks.currentContextTimestamps[proj2Path], callbacks.now); | 472 expect(callbacks.currentContextTimestamps[proj2Path], callbacks.now); |
| 488 }); | 473 }); |
| 489 }); | 474 }); |
| 490 } | 475 } |
| 491 | 476 |
| 477 test_sdk_ext_packagespec() async { |
| 478 // Create files. |
| 479 String libPath = newFolder([projPath, LIB_NAME]); |
| 480 newFile([libPath, 'main.dart']); |
| 481 newFile([libPath, 'nope.dart']); |
| 482 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
| 483 newFile([sdkExtPath, 'entry.dart']); |
| 484 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
| 485 newFile([sdkExtSrcPath, 'part.dart']); |
| 486 // Setup sdk extension mapping. |
| 487 newFile( |
| 488 [libPath, '_sdkext'], |
| 489 r''' |
| 490 { |
| 491 "dart:foobar": "../sdk_ext/entry.dart" |
| 492 } |
| 493 '''); |
| 494 // Setup .packages file |
| 495 newFile( |
| 496 [projPath, '.packages'], |
| 497 r''' |
| 498 test_pack:lib/ |
| 499 '''); |
| 500 // Setup context. |
| 501 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 502 // Confirm that one context was created. |
| 503 var contexts = |
| 504 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath)); |
| 505 expect(contexts, isNotNull); |
| 506 expect(contexts.length, equals(1)); |
| 507 var context = contexts[0]; |
| 508 var source = context.sourceFactory.forUri('dart:foobar'); |
| 509 expect(source.fullName, equals('/my/proj/sdk_ext/entry.dart')); |
| 510 } |
| 511 |
| 492 void test_setRoots_addFolderWithDartFile() { | 512 void test_setRoots_addFolderWithDartFile() { |
| 493 String filePath = posix.join(projPath, 'foo.dart'); | 513 String filePath = posix.join(projPath, 'foo.dart'); |
| 494 resourceProvider.newFile(filePath, 'contents'); | 514 resourceProvider.newFile(filePath, 'contents'); |
| 495 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 515 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 496 // verify | 516 // verify |
| 497 var filePaths = callbacks.currentContextFilePaths[projPath]; | 517 var filePaths = callbacks.currentContextFilePaths[projPath]; |
| 498 expect(filePaths, hasLength(1)); | 518 expect(filePaths, hasLength(1)); |
| 499 expect(filePaths, contains(filePath)); | 519 expect(filePaths, contains(filePath)); |
| 500 List<AnalysisContext> contextsInAnalysisRoot = | 520 List<AnalysisContext> contextsInAnalysisRoot = |
| 501 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath)); | 521 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath)); |
| (...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1718 class TestUriResolver extends UriResolver { | 1738 class TestUriResolver extends UriResolver { |
| 1719 Map<Uri, Source> uriMap; | 1739 Map<Uri, Source> uriMap; |
| 1720 | 1740 |
| 1721 TestUriResolver(this.uriMap); | 1741 TestUriResolver(this.uriMap); |
| 1722 | 1742 |
| 1723 @override | 1743 @override |
| 1724 Source resolveAbsolute(Uri uri, [Uri actualUri]) { | 1744 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
| 1725 return uriMap[uri]; | 1745 return uriMap[uri]; |
| 1726 } | 1746 } |
| 1727 } | 1747 } |
| OLD | NEW |