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 import 'dart:io' as io; | 8 import 'dart:io' as io; |
9 | 9 |
10 import 'package:analysis_server/src/context_manager.dart'; | 10 import 'package:analysis_server/src/context_manager.dart'; |
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 | 437 |
438 void test_setRoots_addFolderWithNestedPackageSpec() { | 438 void test_setRoots_addFolderWithNestedPackageSpec() { |
439 String examplePath = newFolder([projPath, ContextManagerTest.EXAMPLE_NAME]); | 439 String examplePath = newFolder([projPath, ContextManagerTest.EXAMPLE_NAME]); |
440 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); | 440 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); |
441 | 441 |
442 newFile([projPath, ContextManagerImpl.PACKAGE_SPEC_NAME]); | 442 newFile([projPath, ContextManagerImpl.PACKAGE_SPEC_NAME]); |
443 newFile([libPath, 'main.dart']); | 443 newFile([libPath, 'main.dart']); |
444 newFile([examplePath, ContextManagerImpl.PACKAGE_SPEC_NAME]); | 444 newFile([examplePath, ContextManagerImpl.PACKAGE_SPEC_NAME]); |
445 newFile([examplePath, 'example.dart']); | 445 newFile([examplePath, 'example.dart']); |
446 | 446 |
447 packageMapProvider.packageMap['proj'] = <Folder>[ | |
448 resourceProvider.getResource(libPath) | |
449 ]; | |
450 | |
451 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 447 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
452 | 448 |
453 expect(callbacks.currentContextPaths, hasLength(2)); | 449 expect(callbacks.currentContextPaths, hasLength(2)); |
454 | 450 |
455 expect(callbacks.currentContextPaths, contains(projPath)); | 451 expect(callbacks.currentContextPaths, contains(projPath)); |
456 Set<Source> projSources = callbacks.currentContextSources[projPath]; | 452 Set<Source> projSources = callbacks.currentContextSources[projPath]; |
457 expect(projSources, hasLength(1)); | 453 expect(projSources, hasLength(1)); |
458 expect(projSources.first.uri.toString(), 'file:///my/proj/lib/main.dart'); | 454 expect(projSources.first.uri.toString(), 'file:///my/proj/lib/main.dart'); |
459 | 455 |
460 expect(callbacks.currentContextPaths, contains(examplePath)); | 456 expect(callbacks.currentContextPaths, contains(examplePath)); |
(...skipping 23 matching lines...) Expand all Loading... |
484 expect(projSources.first.uri.toString(), 'package:proj/main.dart'); | 480 expect(projSources.first.uri.toString(), 'package:proj/main.dart'); |
485 | 481 |
486 expect(callbacks.currentContextPaths, contains(examplePath)); | 482 expect(callbacks.currentContextPaths, contains(examplePath)); |
487 Set<Source> exampleSources = callbacks.currentContextSources[examplePath]; | 483 Set<Source> exampleSources = callbacks.currentContextSources[examplePath]; |
488 expect(exampleSources, hasLength(1)); | 484 expect(exampleSources, hasLength(1)); |
489 expect(exampleSources.first.uri.toString(), | 485 expect(exampleSources.first.uri.toString(), |
490 'file:///my/proj/example/example.dart'); | 486 'file:///my/proj/example/example.dart'); |
491 } | 487 } |
492 | 488 |
493 void test_setRoots_addFolderWithoutPubspec() { | 489 void test_setRoots_addFolderWithoutPubspec() { |
494 packageMapProvider.packageMap = null; | |
495 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 490 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
496 // verify | 491 // verify |
497 expect(callbacks.currentContextPaths, hasLength(1)); | 492 expect(callbacks.currentContextPaths, hasLength(1)); |
498 expect(callbacks.currentContextPaths, contains(projPath)); | 493 expect(callbacks.currentContextPaths, contains(projPath)); |
499 expect(callbacks.currentContextFilePaths[projPath], hasLength(0)); | 494 expect(callbacks.currentContextFilePaths[projPath], hasLength(0)); |
500 } | 495 } |
501 | 496 |
502 void test_setRoots_addFolderWithPackagespec() { | 497 void test_setRoots_addFolderWithPackagespec() { |
503 String packagespecPath = posix.join(projPath, '.packages'); | 498 String packagespecPath = posix.join(projPath, '.packages'); |
504 resourceProvider.newFile(packagespecPath, | 499 resourceProvider.newFile(packagespecPath, |
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 String fileA = '$project/foo.dart'; | 970 String fileA = '$project/foo.dart'; |
976 String fileB = '$project/.pub/bar.dart'; | 971 String fileB = '$project/.pub/bar.dart'; |
977 resourceProvider.newFile(fileA, ''); | 972 resourceProvider.newFile(fileA, ''); |
978 resourceProvider.newFile(fileB, ''); | 973 resourceProvider.newFile(fileB, ''); |
979 manager.setRoots(<String>[project], <String>[], <String, String>{}); | 974 manager.setRoots(<String>[project], <String>[], <String, String>{}); |
980 callbacks.assertContextPaths([project]); | 975 callbacks.assertContextPaths([project]); |
981 callbacks.assertContextFiles(project, [fileA]); | 976 callbacks.assertContextFiles(project, [fileA]); |
982 } | 977 } |
983 | 978 |
984 void test_setRoots_removeFolderWithoutPubspec() { | 979 void test_setRoots_removeFolderWithoutPubspec() { |
985 packageMapProvider.packageMap = null; | |
986 // add one root - there is a context | 980 // add one root - there is a context |
987 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 981 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
988 expect(callbacks.currentContextPaths, hasLength(1)); | 982 expect(callbacks.currentContextPaths, hasLength(1)); |
989 // set empty roots - no contexts | 983 // set empty roots - no contexts |
990 manager.setRoots(<String>[], <String>[], <String, String>{}); | 984 manager.setRoots(<String>[], <String>[], <String, String>{}); |
991 expect(callbacks.currentContextPaths, hasLength(0)); | 985 expect(callbacks.currentContextPaths, hasLength(0)); |
992 expect(callbacks.currentContextFilePaths, hasLength(0)); | 986 expect(callbacks.currentContextFilePaths, hasLength(0)); |
993 } | 987 } |
994 | 988 |
995 void test_setRoots_removeFolderWithPackagespec() { | 989 void test_setRoots_removeFolderWithPackagespec() { |
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1612 resourceProvider.modifyFile(filePath, 'new contents'); | 1606 resourceProvider.modifyFile(filePath, 'new contents'); |
1613 return pumpEventQueue().then((_) { | 1607 return pumpEventQueue().then((_) { |
1614 return expect(filePaths[filePath], equals(callbacks.now)); | 1608 return expect(filePaths[filePath], equals(callbacks.now)); |
1615 }); | 1609 }); |
1616 } | 1610 } |
1617 | 1611 |
1618 test_watch_modifyPackageMapDependency_fail() async { | 1612 test_watch_modifyPackageMapDependency_fail() async { |
1619 // create a dependency file | 1613 // create a dependency file |
1620 String dependencyPath = posix.join(projPath, 'dep'); | 1614 String dependencyPath = posix.join(projPath, 'dep'); |
1621 resourceProvider.newFile(dependencyPath, 'contents'); | 1615 resourceProvider.newFile(dependencyPath, 'contents'); |
1622 packageMapProvider.dependencies.add(dependencyPath); | |
1623 // create a Dart file | 1616 // create a Dart file |
1624 String dartFilePath = posix.join(projPath, 'main.dart'); | 1617 String dartFilePath = posix.join(projPath, 'main.dart'); |
1625 resourceProvider.newFile(dartFilePath, 'contents'); | 1618 resourceProvider.newFile(dartFilePath, 'contents'); |
1626 // the created context has the expected empty package map | 1619 // the created context has the expected empty package map |
1627 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 1620 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
1628 expect(_currentPackageMap, isEmpty); | 1621 expect(_currentPackageMap, isEmpty); |
1629 // Change the package map dependency so that the packageMapProvider is | 1622 // Change the package map dependency so that the packageMapProvider is |
1630 // re-run, and arrange for it to return null from computePackageMap(). | 1623 // re-run, and arrange for it to return null from computePackageMap(). |
1631 packageMapProvider.packageMap = null; | |
1632 resourceProvider.modifyFile(dependencyPath, 'new contents'); | 1624 resourceProvider.modifyFile(dependencyPath, 'new contents'); |
1633 await pumpEventQueue(); | 1625 await pumpEventQueue(); |
1634 // The package map should have been changed to null. | 1626 // The package map should have been changed to null. |
1635 expect(_currentPackageMap, isEmpty); | 1627 expect(_currentPackageMap, isEmpty); |
1636 } | 1628 } |
1637 | 1629 |
1638 test_watch_modifyPackagespec() { | 1630 test_watch_modifyPackagespec() { |
1639 String packagesPath = '$projPath/.packages'; | 1631 String packagesPath = '$projPath/.packages'; |
1640 String filePath = '$projPath/bin/main.dart'; | 1632 String filePath = '$projPath/bin/main.dart'; |
1641 | 1633 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1703 * The name of the 'test' directory. | 1695 * The name of the 'test' directory. |
1704 */ | 1696 */ |
1705 static const String TEST_NAME = 'test'; | 1697 static const String TEST_NAME = 'test'; |
1706 | 1698 |
1707 ContextManagerImpl manager; | 1699 ContextManagerImpl manager; |
1708 | 1700 |
1709 TestContextManagerCallbacks callbacks; | 1701 TestContextManagerCallbacks callbacks; |
1710 | 1702 |
1711 MemoryResourceProvider resourceProvider; | 1703 MemoryResourceProvider resourceProvider; |
1712 | 1704 |
1713 MockPackageMapProvider packageMapProvider; | |
1714 | |
1715 UriResolver packageResolver = null; | 1705 UriResolver packageResolver = null; |
1716 | 1706 |
1717 String projPath = '/my/proj'; | 1707 String projPath = '/my/proj'; |
1718 | 1708 |
1719 AnalysisError missing_required_param = new AnalysisError( | 1709 AnalysisError missing_required_param = new AnalysisError( |
1720 new TestSource(), 0, 1, HintCode.MISSING_REQUIRED_PARAM, [ | 1710 new TestSource(), 0, 1, HintCode.MISSING_REQUIRED_PARAM, [ |
1721 ['x'] | 1711 ['x'] |
1722 ]); | 1712 ]); |
1723 | 1713 |
1724 AnalysisError missing_return = | 1714 AnalysisError missing_return = |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1787 plugins.add(linterPlugin); | 1777 plugins.add(linterPlugin); |
1788 ExtensionManager manager = new ExtensionManager(); | 1778 ExtensionManager manager = new ExtensionManager(); |
1789 manager.processPlugins(plugins); | 1779 manager.processPlugins(plugins); |
1790 } | 1780 } |
1791 | 1781 |
1792 UriResolver providePackageResolver(Folder folder) => packageResolver; | 1782 UriResolver providePackageResolver(Folder folder) => packageResolver; |
1793 | 1783 |
1794 void setUp() { | 1784 void setUp() { |
1795 processRequiredPlugins(); | 1785 processRequiredPlugins(); |
1796 resourceProvider = new MemoryResourceProvider(); | 1786 resourceProvider = new MemoryResourceProvider(); |
1797 packageMapProvider = new MockPackageMapProvider(); | |
1798 DartSdk sdk = new MockSdk(resourceProvider: resourceProvider); | 1787 DartSdk sdk = new MockSdk(resourceProvider: resourceProvider); |
1799 DartSdkManager sdkManager = new DartSdkManager('/', false, (_) => sdk); | 1788 DartSdkManager sdkManager = new DartSdkManager('/', false, (_) => sdk); |
1800 manager = new ContextManagerImpl( | 1789 manager = new ContextManagerImpl( |
1801 resourceProvider, | 1790 resourceProvider, |
1802 sdkManager, | 1791 sdkManager, |
1803 providePackageResolver, | 1792 providePackageResolver, |
1804 packageMapProvider, | |
1805 analysisFilesGlobs, | 1793 analysisFilesGlobs, |
1806 InstrumentationService.NULL_SERVICE, | 1794 InstrumentationService.NULL_SERVICE, |
1807 new AnalysisOptionsImpl()); | 1795 new AnalysisOptionsImpl()); |
1808 callbacks = new TestContextManagerCallbacks(resourceProvider); | 1796 callbacks = new TestContextManagerCallbacks(resourceProvider); |
1809 manager.callbacks = callbacks; | 1797 manager.callbacks = callbacks; |
1810 resourceProvider.newFolder(projPath); | 1798 resourceProvider.newFolder(projPath); |
1811 } | 1799 } |
1812 | 1800 |
1813 /** | 1801 /** |
1814 * Verify that package URI's for source files in [path] will be resolved | 1802 * Verify that package URI's for source files in [path] will be resolved |
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2702 void assertContextFiles(String contextPath, List<String> expectedFiles) { | 2690 void assertContextFiles(String contextPath, List<String> expectedFiles) { |
2703 var actualFiles = currentContextFilePaths[contextPath].keys; | 2691 var actualFiles = currentContextFilePaths[contextPath].keys; |
2704 expect(actualFiles, unorderedEquals(expectedFiles)); | 2692 expect(actualFiles, unorderedEquals(expectedFiles)); |
2705 } | 2693 } |
2706 | 2694 |
2707 void assertContextPaths(List<String> expected) { | 2695 void assertContextPaths(List<String> expected) { |
2708 expect(currentContextPaths, unorderedEquals(expected)); | 2696 expect(currentContextPaths, unorderedEquals(expected)); |
2709 } | 2697 } |
2710 | 2698 |
2711 @override | 2699 @override |
2712 void computingPackageMap(bool computing) { | |
2713 // Do nothing. | |
2714 } | |
2715 | |
2716 @override | |
2717 ContextBuilder createContextBuilder(Folder folder, AnalysisOptions options) { | 2700 ContextBuilder createContextBuilder(Folder folder, AnalysisOptions options) { |
2718 DartSdkManager sdkManager = new DartSdkManager('/', false, null); | 2701 DartSdkManager sdkManager = new DartSdkManager('/', false, null); |
2719 ContextBuilder builder = | 2702 ContextBuilder builder = |
2720 new ContextBuilder(resourceProvider, sdkManager, new ContentCache()); | 2703 new ContextBuilder(resourceProvider, sdkManager, new ContentCache()); |
2721 builder.defaultOptions = options; | 2704 builder.defaultOptions = options; |
2722 return builder; | 2705 return builder; |
2723 } | 2706 } |
2724 | 2707 |
2725 @override | 2708 @override |
2726 void moveContext(Folder from, Folder to) { | 2709 void moveContext(Folder from, Folder to) { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2766 class TestUriResolver extends UriResolver { | 2749 class TestUriResolver extends UriResolver { |
2767 Map<Uri, Source> uriMap; | 2750 Map<Uri, Source> uriMap; |
2768 | 2751 |
2769 TestUriResolver(this.uriMap); | 2752 TestUriResolver(this.uriMap); |
2770 | 2753 |
2771 @override | 2754 @override |
2772 Source resolveAbsolute(Uri uri, [Uri actualUri]) { | 2755 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
2773 return uriMap[uri]; | 2756 return uriMap[uri]; |
2774 } | 2757 } |
2775 } | 2758 } |
OLD | NEW |