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

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

Issue 2937323003: Remove ability to disable new analysis driver (Closed)
Patch Set: Created 3 years, 6 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
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:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 import 'package:analysis_server/src/context_manager.dart'; 10 import 'package:analysis_server/src/context_manager.dart';
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 main() { 43 main() {
44 defineReflectiveSuite(() { 44 defineReflectiveSuite(() {
45 defineReflectiveTests(AbstractContextManagerTest); 45 defineReflectiveTests(AbstractContextManagerTest);
46 defineReflectiveTests(ContextManagerWithNewOptionsTest); 46 defineReflectiveTests(ContextManagerWithNewOptionsTest);
47 defineReflectiveTests(ContextManagerWithOldOptionsTest); 47 defineReflectiveTests(ContextManagerWithOldOptionsTest);
48 }); 48 });
49 } 49 }
50 50
51 @reflectiveTest 51 @reflectiveTest
52 class AbstractContextManagerTest extends ContextManagerTest { 52 class AbstractContextManagerTest extends ContextManagerTest {
53 bool get enableAnalysisDriver => true;
54
55 void test_contextsInAnalysisRoot_nestedContext() { 53 void test_contextsInAnalysisRoot_nestedContext() {
56 String subProjPath = path.posix.join(projPath, 'subproj'); 54 String subProjPath = path.posix.join(projPath, 'subproj');
57 Folder subProjFolder = resourceProvider.newFolder(subProjPath); 55 Folder subProjFolder = resourceProvider.newFolder(subProjPath);
58 resourceProvider.newFile( 56 resourceProvider.newFile(
59 path.posix.join(subProjPath, 'pubspec.yaml'), 'contents'); 57 path.posix.join(subProjPath, 'pubspec.yaml'), 'contents');
60 String subProjFilePath = path.posix.join(subProjPath, 'file.dart'); 58 String subProjFilePath = path.posix.join(subProjPath, 'file.dart');
61 resourceProvider.newFile(subProjFilePath, 'contents'); 59 resourceProvider.newFile(subProjFilePath, 'contents');
62 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 60 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
63 // Make sure that there really are contexts for both the main project and 61 // Make sure that there really are contexts for both the main project and
64 // the subproject. 62 // the subproject.
65 Folder projectFolder = resourceProvider.getFolder(projPath); 63 Folder projectFolder = resourceProvider.getFolder(projPath);
66 ContextInfo projContextInfo = manager.getContextInfoFor(projectFolder); 64 ContextInfo projContextInfo = manager.getContextInfoFor(projectFolder);
67 expect(projContextInfo, isNotNull); 65 expect(projContextInfo, isNotNull);
68 expect(projContextInfo.folder, projectFolder); 66 expect(projContextInfo.folder, projectFolder);
69 ContextInfo subProjContextInfo = manager.getContextInfoFor(subProjFolder); 67 ContextInfo subProjContextInfo = manager.getContextInfoFor(subProjFolder);
70 expect(subProjContextInfo, isNotNull); 68 expect(subProjContextInfo, isNotNull);
71 expect(subProjContextInfo.folder, subProjFolder); 69 expect(subProjContextInfo.folder, subProjFolder);
72 if (enableAnalysisDriver) { 70 expect(projContextInfo.analysisDriver,
73 expect(projContextInfo.analysisDriver, 71 isNot(equals(subProjContextInfo.analysisDriver)));
74 isNot(equals(subProjContextInfo.analysisDriver))); 72 // Check that getDriversInAnalysisRoot() works.
75 // Check that getDriversInAnalysisRoot() works. 73 List<AnalysisDriver> drivers =
76 List<AnalysisDriver> drivers = 74 manager.getDriversInAnalysisRoot(projectFolder);
77 manager.getDriversInAnalysisRoot(projectFolder); 75 expect(drivers, isNotNull);
78 expect(drivers, isNotNull); 76 expect(drivers, hasLength(2));
79 expect(drivers, hasLength(2)); 77 expect(drivers, contains(projContextInfo.analysisDriver));
80 expect(drivers, contains(projContextInfo.analysisDriver)); 78 expect(drivers, contains(subProjContextInfo.analysisDriver));
81 expect(drivers, contains(subProjContextInfo.analysisDriver));
82 } else {
83 expect(projContextInfo.context != subProjContextInfo.context, isTrue);
84 // Check that contextsInAnalysisRoot() works.
85 List<AnalysisContext> contexts =
86 manager.contextsInAnalysisRoot(projectFolder);
87 expect(contexts, hasLength(2));
88 expect(contexts, contains(projContextInfo.context));
89 expect(contexts, contains(subProjContextInfo.context));
90 }
91 } 79 }
92 80
93 @failingTest 81 @failingTest
94 test_embedder_added() async { 82 test_embedder_added() async {
95 // NoSuchMethodError: The getter 'apiSignature' was called on null. 83 // NoSuchMethodError: The getter 'apiSignature' was called on null.
96 // Receiver: null 84 // Receiver: null
97 // Tried calling: apiSignature 85 // Tried calling: apiSignature
98 // dart:core Object .noSuchMethod 86 // dart:core Object .noSuchMethod
99 // package:analyzer/src/dart/analysis/driver.dart 460:20 Analys isDriver.configure 87 // package:analyzer/src/dart/analysis/driver.dart 460:20 Analys isDriver.configure
100 // package:analysis_server/src/context_manager.dart 1043:16 Contex tManagerImpl._checkForPackagespecUpdate 88 // package:analysis_server/src/context_manager.dart 1043:16 Contex tManagerImpl._checkForPackagespecUpdate
(...skipping 19 matching lines...) Expand all
120 '''); 108 ''');
121 109
122 Folder projectFolder = resourceProvider.newFolder(projPath); 110 Folder projectFolder = resourceProvider.newFolder(projPath);
123 111
124 // NOTE that this is Not in our package path yet. 112 // NOTE that this is Not in our package path yet.
125 113
126 // Setup context. 114 // Setup context.
127 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 115 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
128 await pumpEventQueue(); 116 await pumpEventQueue();
129 // Confirm that one driver / context was created. 117 // Confirm that one driver / context was created.
130 if (enableAnalysisDriver) { 118 List<AnalysisDriver> drivers =
131 List<AnalysisDriver> drivers = 119 manager.getDriversInAnalysisRoot(projectFolder);
132 manager.getDriversInAnalysisRoot(projectFolder); 120 expect(drivers, isNotNull);
133 expect(drivers, isNotNull); 121 expect(drivers, hasLength(1));
134 expect(drivers, hasLength(1));
135 } else {
136 List<AnalysisContext> contexts =
137 manager.contextsInAnalysisRoot(projectFolder);
138 expect(contexts, isNotNull);
139 expect(contexts, hasLength(1));
140 }
141 122
142 // No embedded libs yet. 123 // No embedded libs yet.
143 expect(sourceFactory.forUri('dart:typed_data'), isNull); 124 expect(sourceFactory.forUri('dart:typed_data'), isNull);
144 125
145 // Add .packages file that introduces a dependency with embedded libs. 126 // Add .packages file that introduces a dependency with embedded libs.
146 newFile( 127 newFile(
147 [projPath, '.packages'], 128 [projPath, '.packages'],
148 r''' 129 r'''
149 test_pack:lib/'''); 130 test_pack:lib/''');
150 131
151 await pumpEventQueue(); 132 await pumpEventQueue();
152 133
153 // Confirm that we still have just one driver / context. 134 // Confirm that we still have just one driver / context.
154 if (enableAnalysisDriver) { 135 drivers = manager.getDriversInAnalysisRoot(projectFolder);
155 List<AnalysisDriver> drivers = 136 expect(drivers, isNotNull);
156 manager.getDriversInAnalysisRoot(projectFolder); 137 expect(drivers, hasLength(1));
157 expect(drivers, isNotNull);
158 expect(drivers, hasLength(1));
159 } else {
160 List<AnalysisContext> contexts =
161 manager.contextsInAnalysisRoot(projectFolder);
162
163 expect(contexts, isNotNull);
164 expect(contexts, hasLength(1));
165 }
166 138
167 // Embedded lib should be defined now. 139 // Embedded lib should be defined now.
168 expect(sourceFactory.forUri('dart:typed_data'), isNotNull); 140 expect(sourceFactory.forUri('dart:typed_data'), isNotNull);
169 } 141 }
170 142
171 test_embedder_packagespec() async { 143 test_embedder_packagespec() async {
172 // Create files. 144 // Create files.
173 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); 145 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]);
174 newFile([libPath, 'main.dart']); 146 newFile([libPath, 'main.dart']);
175 newFile([libPath, 'nope.dart']); 147 newFile([libPath, 'nope.dart']);
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 } 409 }
438 410
439 void test_setRoots_addFolderWithDartFile() { 411 void test_setRoots_addFolderWithDartFile() {
440 String filePath = path.posix.join(projPath, 'foo.dart'); 412 String filePath = path.posix.join(projPath, 'foo.dart');
441 resourceProvider.newFile(filePath, 'contents'); 413 resourceProvider.newFile(filePath, 'contents');
442 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 414 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
443 // verify 415 // verify
444 Iterable<String> filePaths = callbacks.currentFilePaths; 416 Iterable<String> filePaths = callbacks.currentFilePaths;
445 expect(filePaths, hasLength(1)); 417 expect(filePaths, hasLength(1));
446 expect(filePaths, contains(filePath)); 418 expect(filePaths, contains(filePath));
447 if (enableAnalysisDriver) { 419 List<AnalysisDriver> drivers =
448 List<AnalysisDriver> drivers = manager 420 manager.getDriversInAnalysisRoot(resourceProvider.newFolder(projPath));
449 .getDriversInAnalysisRoot(resourceProvider.newFolder(projPath)); 421 expect(drivers, hasLength(1));
450 expect(drivers, hasLength(1)); 422 expect(drivers[0], isNotNull);
451 expect(drivers[0], isNotNull);
452 } else {
453 List<AnalysisContext> contextsInAnalysisRoot =
454 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath));
455 expect(contextsInAnalysisRoot, hasLength(1));
456 expect(contextsInAnalysisRoot[0], isNotNull);
457 }
458 Source result = sourceFactory.forUri('dart:async'); 423 Source result = sourceFactory.forUri('dart:async');
459 expect(result, isNotNull); 424 expect(result, isNotNull);
460 } 425 }
461 426
462 void test_setRoots_addFolderWithDartFileInSubfolder() { 427 void test_setRoots_addFolderWithDartFileInSubfolder() {
463 String filePath = path.posix.join(projPath, 'foo', 'bar.dart'); 428 String filePath = path.posix.join(projPath, 'foo', 'bar.dart');
464 resourceProvider.newFile(filePath, 'contents'); 429 resourceProvider.newFile(filePath, 'contents');
465 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 430 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
466 // verify 431 // verify
467 Iterable<String> filePaths = callbacks.currentFilePaths; 432 Iterable<String> filePaths = callbacks.currentFilePaths;
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 expect(callbacks.currentContextRoots, contains(projPath)); 950 expect(callbacks.currentContextRoots, contains(projPath));
986 expect(callbacks.currentFilePaths, hasLength(0)); 951 expect(callbacks.currentFilePaths, hasLength(0));
987 } 952 }
988 953
989 void test_setRoots_packageResolver() { 954 void test_setRoots_packageResolver() {
990 String filePath = path.posix.join(projPath, 'lib', 'foo.dart'); 955 String filePath = path.posix.join(projPath, 'lib', 'foo.dart');
991 newFile([projPath, ContextManagerImpl.PACKAGE_SPEC_NAME], 'foo:lib/'); 956 newFile([projPath, ContextManagerImpl.PACKAGE_SPEC_NAME], 'foo:lib/');
992 resourceProvider.newFile(filePath, 'contents'); 957 resourceProvider.newFile(filePath, 'contents');
993 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 958 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
994 959
995 if (enableAnalysisDriver) { 960 var drivers =
996 var drivers = manager 961 manager.getDriversInAnalysisRoot(resourceProvider.newFolder(projPath));
997 .getDriversInAnalysisRoot(resourceProvider.newFolder(projPath)); 962 expect(drivers, hasLength(1));
998 expect(drivers, hasLength(1)); 963 expect(drivers[0], isNotNull);
999 expect(drivers[0], isNotNull);
1000 } else {
1001 List<AnalysisContext> contextsInAnalysisRoot =
1002 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath));
1003 expect(contextsInAnalysisRoot, hasLength(1));
1004 expect(contextsInAnalysisRoot[0], isNotNull);
1005 }
1006 Source result = sourceFactory.forUri('package:foo/foo.dart'); 964 Source result = sourceFactory.forUri('package:foo/foo.dart');
1007 expect(result.fullName, filePath); 965 expect(result.fullName, filePath);
1008 } 966 }
1009 967
1010 void test_setRoots_pathContainsDotFile() { 968 void test_setRoots_pathContainsDotFile() {
1011 // If the path to a file (relative to the context root) contains a folder 969 // If the path to a file (relative to the context root) contains a folder
1012 // whose name begins with '.', then the file is ignored. 970 // whose name begins with '.', then the file is ignored.
1013 String project = '/project'; 971 String project = '/project';
1014 String fileA = '$project/foo.dart'; 972 String fileA = '$project/foo.dart';
1015 String fileB = '$project/.pub/bar.dart'; 973 String fileB = '$project/.pub/bar.dart';
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after
1634 callbacks.assertContextFiles(root, [rootFile, subFile]); 1592 callbacks.assertContextFiles(root, [rootFile, subFile]);
1635 }); 1593 });
1636 } 1594 }
1637 1595
1638 test_watch_modifyFile() { 1596 test_watch_modifyFile() {
1639 String filePath = path.posix.join(projPath, 'foo.dart'); 1597 String filePath = path.posix.join(projPath, 'foo.dart');
1640 // add root with a file 1598 // add root with a file
1641 resourceProvider.newFile(filePath, 'contents'); 1599 resourceProvider.newFile(filePath, 'contents');
1642 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 1600 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
1643 // the file was added 1601 // the file was added
1644 if (enableAnalysisDriver) { 1602 Iterable<String> filePaths = callbacks.currentFilePaths;
1645 Iterable<String> filePaths = callbacks.currentFilePaths; 1603 expect(filePaths, hasLength(1));
1646 expect(filePaths, hasLength(1)); 1604 expect(filePaths, contains(filePath));
1647 expect(filePaths, contains(filePath)); 1605 // TODO(brianwilkerson) Test when the file was modified
1648 // TODO(brianwilkerson) Test when the file was modified
1649 } else {
1650 Map<String, int> filePaths = callbacks.currentContextFilePaths[projPath];
1651 expect(filePaths, hasLength(1));
1652 expect(filePaths, contains(filePath));
1653 expect(filePaths[filePath], equals(callbacks.now));
1654 }
1655 // update the file 1606 // update the file
1656 callbacks.now++; 1607 callbacks.now++;
1657 resourceProvider.modifyFile(filePath, 'new contents'); 1608 resourceProvider.modifyFile(filePath, 'new contents');
1658 return pumpEventQueue().then((_) { 1609 return pumpEventQueue().then((_) {
1659 if (enableAnalysisDriver) { 1610 // TODO(brianwilkerson) Test when the file was modified
1660 // TODO(brianwilkerson) Test when the file was modified
1661 return null;
1662 }
1663 Map<String, int> filePaths = callbacks.currentContextFilePaths[projPath];
1664 return expect(filePaths[filePath], equals(callbacks.now));
1665 }); 1611 });
1666 } 1612 }
1667 1613
1668 test_watch_modifyPackageMapDependency_fail() async { 1614 test_watch_modifyPackageMapDependency_fail() async {
1669 // create a dependency file 1615 // create a dependency file
1670 String dependencyPath = path.posix.join(projPath, 'dep'); 1616 String dependencyPath = path.posix.join(projPath, 'dep');
1671 resourceProvider.newFile(dependencyPath, 'contents'); 1617 resourceProvider.newFile(dependencyPath, 'contents');
1672 packageMapProvider.dependencies.add(dependencyPath); 1618 packageMapProvider.dependencies.add(dependencyPath);
1673 // create a Dart file 1619 // create a Dart file
1674 String dartFilePath = path.posix.join(projPath, 'main.dart'); 1620 String dartFilePath = path.posix.join(projPath, 'main.dart');
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1790 '**/${AnalysisEngine.ANALYSIS_OPTIONS_FILE}', 1736 '**/${AnalysisEngine.ANALYSIS_OPTIONS_FILE}',
1791 '**/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}' 1737 '**/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}'
1792 ]; 1738 ];
1793 return patterns 1739 return patterns
1794 .map((pattern) => new Glob(path.posix.separator, pattern)) 1740 .map((pattern) => new Glob(path.posix.separator, pattern))
1795 .toList(); 1741 .toList();
1796 } 1742 }
1797 1743
1798 AnalysisOptions get analysisOptions => callbacks.analysisOptions; 1744 AnalysisOptions get analysisOptions => callbacks.analysisOptions;
1799 1745
1800 bool get enableAnalysisDriver => false;
1801
1802 List<ErrorProcessor> get errorProcessors => analysisOptions.errorProcessors; 1746 List<ErrorProcessor> get errorProcessors => analysisOptions.errorProcessors;
1803 1747
1804 List<Linter> get lints => analysisOptions.lintRules; 1748 List<Linter> get lints => analysisOptions.lintRules;
1805 1749
1806 SourceFactory get sourceFactory => callbacks.sourceFactory; 1750 SourceFactory get sourceFactory => callbacks.sourceFactory;
1807 1751
1808 Map<String, List<Folder>> get _currentPackageMap => _packageMap(projPath); 1752 Map<String, List<Folder>> get _currentPackageMap => _packageMap(projPath);
1809 1753
1810 void deleteFile(List<String> pathComponents) { 1754 void deleteFile(List<String> pathComponents) {
1811 String filePath = path.posix.joinAll(pathComponents); 1755 String filePath = path.posix.joinAll(pathComponents);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1860 // Create an SDK in the mock file system. 1804 // Create an SDK in the mock file system.
1861 new MockSdk(generateSummaryFiles: true, resourceProvider: resourceProvider); 1805 new MockSdk(generateSummaryFiles: true, resourceProvider: resourceProvider);
1862 DartSdkManager sdkManager = new DartSdkManager('/', true); 1806 DartSdkManager sdkManager = new DartSdkManager('/', true);
1863 manager = new ContextManagerImpl( 1807 manager = new ContextManagerImpl(
1864 resourceProvider, 1808 resourceProvider,
1865 sdkManager, 1809 sdkManager,
1866 providePackageResolver, 1810 providePackageResolver,
1867 packageMapProvider, 1811 packageMapProvider,
1868 analysisFilesGlobs, 1812 analysisFilesGlobs,
1869 InstrumentationService.NULL_SERVICE, 1813 InstrumentationService.NULL_SERVICE,
1870 new AnalysisOptionsImpl(), 1814 new AnalysisOptionsImpl());
1871 enableAnalysisDriver);
1872 PerformanceLog logger = new PerformanceLog(new NullStringSink()); 1815 PerformanceLog logger = new PerformanceLog(new NullStringSink());
1873 AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(logger); 1816 AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(logger);
1874 callbacks = new TestContextManagerCallbacks( 1817 callbacks = new TestContextManagerCallbacks(
1875 resourceProvider, sdkManager, logger, scheduler); 1818 resourceProvider, sdkManager, logger, scheduler);
1876 manager.callbacks = callbacks; 1819 manager.callbacks = callbacks;
1877 } 1820 }
1878 1821
1879 /** 1822 /**
1880 * Verify that package URI's for source files in [path] will be resolved 1823 * Verify that package URI's for source files in [path] will be resolved
1881 * using a package root matching [expectation]. 1824 * using a package root matching [expectation].
1882 */ 1825 */
1883 void _checkPackageRoot(String path, expectation) { 1826 void _checkPackageRoot(String path, expectation) {
1884 // TODO(brianwilkerson) Figure out how to test this. Possibly by comparing 1827 // TODO(brianwilkerson) Figure out how to test this. Possibly by comparing
1885 // the contents of the package map (although that approach doesn't work at 1828 // the contents of the package map (although that approach doesn't work at
1886 // the moment). 1829 // the moment).
1887 // FolderDisposition disposition = callbacks.currentContextDispositions[path] ; 1830 // FolderDisposition disposition = callbacks.currentContextDispositions[path] ;
1888 // expect(disposition.packageRoot, expectation); 1831 // expect(disposition.packageRoot, expectation);
1889 // TODO(paulberry): we should also verify that the package map itself is 1832 // TODO(paulberry): we should also verify that the package map itself is
1890 // correct. See dartbug.com/23909. 1833 // correct. See dartbug.com/23909.
1891 } 1834 }
1892 1835
1893 Map<String, List<Folder>> _packageMap(String contextPath) { 1836 Map<String, List<Folder>> _packageMap(String contextPath) {
1894 Folder folder = resourceProvider.getFolder(contextPath); 1837 Folder folder = resourceProvider.getFolder(contextPath);
1895 if (enableAnalysisDriver) { 1838 ContextInfo info = manager.getContextInfoFor(folder);
1896 ContextInfo info = manager.getContextInfoFor(folder); 1839 return info.analysisDriver.sourceFactory?.packageMap;
1897 return info.analysisDriver.sourceFactory?.packageMap;
1898 } else {
1899 return manager.folderMap[folder]?.sourceFactory?.packageMap;
1900 }
1901 } 1840 }
1902 } 1841 }
1903 1842
1904 @reflectiveTest 1843 @reflectiveTest
1905 class ContextManagerWithNewOptionsTest extends ContextManagerWithOptionsTest { 1844 class ContextManagerWithNewOptionsTest extends ContextManagerWithOptionsTest {
1906 bool get enableAnalysisDriver => true;
1907
1908 String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE; 1845 String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE;
1909 } 1846 }
1910 1847
1911 @reflectiveTest 1848 @reflectiveTest
1912 class ContextManagerWithOldOptionsTest extends ContextManagerWithOptionsTest { 1849 class ContextManagerWithOldOptionsTest extends ContextManagerWithOptionsTest {
1913 bool get enableAnalysisDriver => true;
1914
1915 String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_FILE; 1850 String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_FILE;
1916 } 1851 }
1917 1852
1918 abstract class ContextManagerWithOptionsTest extends ContextManagerTest { 1853 abstract class ContextManagerWithOptionsTest extends ContextManagerTest {
1919 String get optionsFileName; 1854 String get optionsFileName;
1920 1855
1921 test_analysis_options_file_delete() async { 1856 test_analysis_options_file_delete() async {
1922 // Setup analysis options 1857 // Setup analysis options
1923 newFile( 1858 newFile(
1924 [projPath, optionsFileName], 1859 [projPath, optionsFileName],
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 resourceProvider.newFile( 2244 resourceProvider.newFile(
2310 '$projPath/$optionsFileName', 2245 '$projPath/$optionsFileName',
2311 r''' 2246 r'''
2312 analyzer: 2247 analyzer:
2313 strong-mode: false 2248 strong-mode: false
2314 '''); 2249 ''');
2315 // Create the context. 2250 // Create the context.
2316 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 2251 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
2317 await pumpEventQueue(); 2252 await pumpEventQueue();
2318 2253
2319 if (enableAnalysisDriver) { 2254 AnalysisResult result = await callbacks.currentDriver.getResult(file.path);
2320 AnalysisResult result =
2321 await callbacks.currentDriver.getResult(file.path);
2322 2255
2323 // Not strong mode - both in the context and the SDK context. 2256 // Not strong mode - both in the context and the SDK context.
2324 AnalysisContext sdkContext = sourceFactory.dartSdk.context; 2257 AnalysisContext sdkContext = sourceFactory.dartSdk.context;
2325 expect(analysisOptions.strongMode, isFalse); 2258 expect(analysisOptions.strongMode, isFalse);
2326 expect(sdkContext.analysisOptions.strongMode, isFalse); 2259 expect(sdkContext.analysisOptions.strongMode, isFalse);
2327 expect(result.errors, isEmpty); 2260 expect(result.errors, isEmpty);
2328 } else {
2329 AnalysisContext context = manager.getContextFor(projPath);
2330 Source testSource = context.getSourcesWithFullName(file.path).single;
2331
2332 // Not strong mode - both in the context and the SDK context.
2333 AnalysisContext sdkContext = sourceFactory.dartSdk.context;
2334 expect(analysisOptions.strongMode, isFalse);
2335 expect(sdkContext.analysisOptions.strongMode, isFalse);
2336 expect(context.computeErrors(testSource), isEmpty);
2337 }
2338 2261
2339 // Update the options file - turn on 'strong-mode'. 2262 // Update the options file - turn on 'strong-mode'.
2340 resourceProvider.updateFile( 2263 resourceProvider.updateFile(
2341 '$projPath/$optionsFileName', 2264 '$projPath/$optionsFileName',
2342 r''' 2265 r'''
2343 analyzer: 2266 analyzer:
2344 strong-mode: true 2267 strong-mode: true
2345 '''); 2268 ''');
2346 await pumpEventQueue(); 2269 await pumpEventQueue();
2347 2270
2348 // Strong mode - both in the context and the SDK context. 2271 // Strong mode - both in the context and the SDK context.
2349 if (enableAnalysisDriver) { 2272 result = await callbacks.currentDriver.getResult(file.path);
2350 AnalysisResult result =
2351 await callbacks.currentDriver.getResult(file.path);
2352 2273
2353 // Not strong mode - both in the context and the SDK context. 2274 // Not strong mode - both in the context and the SDK context.
2354 AnalysisContext sdkContext = sourceFactory.dartSdk.context; 2275 sdkContext = sourceFactory.dartSdk.context;
2355 expect(analysisOptions.strongMode, isTrue); 2276 expect(analysisOptions.strongMode, isTrue);
2356 expect(sdkContext.analysisOptions.strongMode, isTrue); 2277 expect(sdkContext.analysisOptions.strongMode, isTrue);
2357 // The code is strong-mode clean. 2278 // The code is strong-mode clean.
2358 // Verify that TypeSystem was reset. 2279 // Verify that TypeSystem was reset.
2359 expect(result.errors, isEmpty); 2280 expect(result.errors, isEmpty);
2360 } else {
2361 AnalysisContext context = manager.getContextFor(projPath);
2362 Source testSource = context.getSourcesWithFullName(file.path).single;
2363 AnalysisContext sdkContext = sourceFactory.dartSdk.context;
2364 expect(analysisOptions.strongMode, isTrue);
2365 expect(sdkContext.analysisOptions.strongMode, isTrue);
2366 // The code is strong-mode clean.
2367 // Verify that TypeSystem was reset.
2368 expect(context.computeErrors(testSource), isEmpty);
2369 }
2370 } 2281 }
2371 2282
2372 @failingTest 2283 @failingTest
2373 test_path_filter_analysis_option() async { 2284 test_path_filter_analysis_option() async {
2374 // This fails because we're not analyzing the analysis options file. 2285 // This fails because we're not analyzing the analysis options file.
2375 // Create files. 2286 // Create files.
2376 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); 2287 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]);
2377 newFile([libPath, 'main.dart']); 2288 newFile([libPath, 'main.dart']);
2378 newFile([libPath, 'nope.dart']); 2289 newFile([libPath, 'nope.dart']);
2379 String sdkExtPath = newFolder([projPath, 'sdk_ext']); 2290 String sdkExtPath = newFolder([projPath, 'sdk_ext']);
2380 newFile([sdkExtPath, 'entry.dart']); 2291 newFile([sdkExtPath, 'entry.dart']);
2381 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); 2292 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']);
2382 newFile([sdkExtSrcPath, 'part.dart']); 2293 newFile([sdkExtSrcPath, 'part.dart']);
2383 // Setup analysis options file with ignore list. 2294 // Setup analysis options file with ignore list.
2384 newFile( 2295 newFile(
2385 [projPath, optionsFileName], 2296 [projPath, optionsFileName],
2386 r''' 2297 r'''
2387 analyzer: 2298 analyzer:
2388 exclude: 2299 exclude:
2389 - lib/nope.dart 2300 - lib/nope.dart
2390 - 'sdk_ext/**' 2301 - 'sdk_ext/**'
2391 '''); 2302 ''');
2392 // Setup context. 2303 // Setup context.
2393 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 2304 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
2394 2305
2395 // Verify that analysis options was parsed and the ignore patterns applied. 2306 // Verify that analysis options was parsed and the ignore patterns applied.
2396 Folder projectFolder = resourceProvider.newFolder(projPath); 2307 Folder projectFolder = resourceProvider.newFolder(projPath);
2397 if (enableAnalysisDriver) { 2308 var drivers = manager.getDriversInAnalysisRoot(projectFolder);
2398 var drivers = manager.getDriversInAnalysisRoot(projectFolder); 2309 expect(drivers, hasLength(1));
2399 expect(drivers, hasLength(1)); 2310 AnalysisDriver driver = drivers[0];
2400 AnalysisDriver driver = drivers[0]; 2311 expect(
2401 expect( 2312 driver.addedFiles,
2402 driver.addedFiles, 2313 unorderedEquals(
2403 unorderedEquals( 2314 ['/my/proj/lib/main.dart', '/my/proj/$optionsFileName']));
2404 ['/my/proj/lib/main.dart', '/my/proj/$optionsFileName']));
2405 } else {
2406 Map<String, int> fileTimestamps =
2407 callbacks.currentContextFilePaths[projPath];
2408 expect(fileTimestamps, isNotEmpty);
2409 List<String> files = fileTimestamps.keys.toList();
2410 expect(
2411 files,
2412 unorderedEquals(
2413 ['/my/proj/lib/main.dart', '/my/proj/$optionsFileName']));
2414 }
2415 } 2315 }
2416 2316
2417 test_path_filter_child_contexts_option() async { 2317 test_path_filter_child_contexts_option() async {
2418 // Create files. 2318 // Create files.
2419 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); 2319 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]);
2420 newFile([libPath, 'main.dart']); 2320 newFile([libPath, 'main.dart']);
2421 newFile( 2321 newFile(
2422 [libPath, 'pubspec.yaml'], 2322 [libPath, 'pubspec.yaml'],
2423 r''' 2323 r'''
2424 name: foobar 2324 name: foobar
(...skipping 12 matching lines...) Expand all
2437 r''' 2337 r'''
2438 analyzer: 2338 analyzer:
2439 exclude: 2339 exclude:
2440 - 'other_lib' 2340 - 'other_lib'
2441 '''); 2341 ''');
2442 // Setup context. 2342 // Setup context.
2443 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 2343 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
2444 // Verify that the context in other_lib wasn't created and that the 2344 // Verify that the context in other_lib wasn't created and that the
2445 // context in lib was created. 2345 // context in lib was created.
2446 Folder projectFolder = resourceProvider.newFolder(projPath); 2346 Folder projectFolder = resourceProvider.newFolder(projPath);
2447 if (enableAnalysisDriver) { 2347 var drivers = manager.getDriversInAnalysisRoot(projectFolder);
2448 var drivers = manager.getDriversInAnalysisRoot(projectFolder); 2348 expect(drivers, hasLength(2));
2449 expect(drivers, hasLength(2)); 2349 expect(drivers[0].name, equals('/my/proj'));
2450 expect(drivers[0].name, equals('/my/proj')); 2350 expect(drivers[1].name, equals('/my/proj/lib'));
2451 expect(drivers[1].name, equals('/my/proj/lib'));
2452 } else {
2453 var contexts =
2454 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath));
2455 expect(contexts.length, 2);
2456 expect(contexts[0].name, equals('/my/proj'));
2457 expect(contexts[1].name, equals('/my/proj/lib'));
2458 }
2459 } 2351 }
2460 2352
2461 test_path_filter_recursive_wildcard_child_contexts_option() async { 2353 test_path_filter_recursive_wildcard_child_contexts_option() async {
2462 // Create files. 2354 // Create files.
2463 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); 2355 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]);
2464 newFile([libPath, 'main.dart']); 2356 newFile([libPath, 'main.dart']);
2465 newFile( 2357 newFile(
2466 [libPath, 'pubspec.yaml'], 2358 [libPath, 'pubspec.yaml'],
2467 r''' 2359 r'''
2468 name: foobar 2360 name: foobar
(...skipping 13 matching lines...) Expand all
2482 analyzer: 2374 analyzer:
2483 exclude: 2375 exclude:
2484 - 'other_lib/**' 2376 - 'other_lib/**'
2485 '''); 2377 ''');
2486 // Setup context. 2378 // Setup context.
2487 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 2379 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
2488 2380
2489 // Verify that the context in other_lib wasn't created and that the 2381 // Verify that the context in other_lib wasn't created and that the
2490 // context in lib was created. 2382 // context in lib was created.
2491 Folder projectFolder = resourceProvider.newFolder(projPath); 2383 Folder projectFolder = resourceProvider.newFolder(projPath);
2492 if (enableAnalysisDriver) { 2384 var drivers = manager.getDriversInAnalysisRoot(projectFolder);
2493 var drivers = manager.getDriversInAnalysisRoot(projectFolder); 2385 expect(drivers, hasLength(2));
2494 expect(drivers, hasLength(2)); 2386 expect(drivers[0].name, equals('/my/proj'));
2495 expect(drivers[0].name, equals('/my/proj')); 2387 expect(drivers[1].name, equals('/my/proj/lib'));
2496 expect(drivers[1].name, equals('/my/proj/lib'));
2497 } else {
2498 var contexts = manager.contextsInAnalysisRoot(projectFolder);
2499 expect(contexts.length, 2);
2500 expect(contexts[0].name, equals('/my/proj'));
2501 expect(contexts[1].name, equals('/my/proj/lib'));
2502 }
2503 } 2388 }
2504 2389
2505 test_path_filter_wildcard_child_contexts_option() async { 2390 test_path_filter_wildcard_child_contexts_option() async {
2506 // Create files. 2391 // Create files.
2507 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]); 2392 String libPath = newFolder([projPath, ContextManagerTest.LIB_NAME]);
2508 newFile([libPath, 'main.dart']); 2393 newFile([libPath, 'main.dart']);
2509 newFile( 2394 newFile(
2510 [libPath, 'pubspec.yaml'], 2395 [libPath, 'pubspec.yaml'],
2511 r''' 2396 r'''
2512 name: foobar 2397 name: foobar
(...skipping 11 matching lines...) Expand all
2524 [projPath, optionsFileName], 2409 [projPath, optionsFileName],
2525 r''' 2410 r'''
2526 analyzer: 2411 analyzer:
2527 exclude: 2412 exclude:
2528 - 'other_lib/*' 2413 - 'other_lib/*'
2529 '''); 2414 ''');
2530 // Setup context / driver. 2415 // Setup context / driver.
2531 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); 2416 manager.setRoots(<String>[projPath], <String>[], <String, String>{});
2532 2417
2533 Folder projectFolder = resourceProvider.newFolder(projPath); 2418 Folder projectFolder = resourceProvider.newFolder(projPath);
2534 if (enableAnalysisDriver) { 2419 var drivers = manager.getDriversInAnalysisRoot(projectFolder);
2535 var drivers = manager.getDriversInAnalysisRoot(projectFolder); 2420 expect(drivers, hasLength(2));
2536 expect(drivers, hasLength(2)); 2421 expect(drivers[0].name, equals('/my/proj'));
2537 expect(drivers[0].name, equals('/my/proj')); 2422 expect(drivers[1].name, equals('/my/proj/lib'));
2538 expect(drivers[1].name, equals('/my/proj/lib'));
2539 } else {
2540 // Verify that the context in other_lib wasn't created and that the
2541 // context in lib was created.
2542 var contexts = manager.contextsInAnalysisRoot(projectFolder);
2543 expect(contexts, hasLength(2));
2544 expect(contexts[0].name, equals('/my/proj'));
2545 expect(contexts[1].name, equals('/my/proj/lib'));
2546 }
2547 } 2423 }
2548 2424
2549 void test_setRoots_nested_excludedByOuter() { 2425 void test_setRoots_nested_excludedByOuter() {
2550 String project = '/project'; 2426 String project = '/project';
2551 String projectPubspec = '$project/pubspec.yaml'; 2427 String projectPubspec = '$project/pubspec.yaml';
2552 String example = '$project/example'; 2428 String example = '$project/example';
2553 String examplePubspec = '$example/pubspec.yaml'; 2429 String examplePubspec = '$example/pubspec.yaml';
2554 // create files 2430 // create files
2555 resourceProvider.newFile(projectPubspec, 'name: project'); 2431 resourceProvider.newFile(projectPubspec, 'name: project');
2556 resourceProvider.newFile(examplePubspec, 'name: example'); 2432 resourceProvider.newFile(examplePubspec, 'name: example');
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
2951 class TestUriResolver extends UriResolver { 2827 class TestUriResolver extends UriResolver {
2952 Map<Uri, Source> uriMap; 2828 Map<Uri, Source> uriMap;
2953 2829
2954 TestUriResolver(this.uriMap); 2830 TestUriResolver(this.uriMap);
2955 2831
2956 @override 2832 @override
2957 Source resolveAbsolute(Uri uri, [Uri actualUri]) { 2833 Source resolveAbsolute(Uri uri, [Uri actualUri]) {
2958 return uriMap[uri]; 2834 return uriMap[uri];
2959 } 2835 }
2960 } 2836 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/analysis_server_test.dart ('k') | pkg/analysis_server/test/domain_analysis_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698