| 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'; |
| 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/instrumentation/instrumentation.dart'; |
| 13 import 'package:analyzer/source/embedder.dart'; | 13 import 'package:analyzer/source/embedder.dart'; |
| 14 import 'package:analyzer/src/generated/engine.dart'; | 14 import 'package:analyzer/src/generated/engine.dart'; |
| 15 import 'package:analyzer/src/generated/error.dart'; | 15 import 'package:analyzer/src/generated/error.dart'; |
| 16 import 'package:analyzer/src/generated/source.dart'; | 16 import 'package:analyzer/src/generated/source.dart'; |
| 17 import 'package:analyzer/src/generated/source_io.dart'; | 17 import 'package:analyzer/src/generated/source_io.dart'; |
| 18 import 'package:package_config/packages.dart'; | 18 import 'package:package_config/packages.dart'; |
| 19 import 'package:path/path.dart'; | 19 import 'package:path/path.dart'; |
| 20 import 'package:plugin/manager.dart'; | |
| 21 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 20 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 22 import 'package:unittest/unittest.dart'; | 21 import 'package:unittest/unittest.dart'; |
| 23 | 22 |
| 24 import 'mocks.dart'; | 23 import 'mocks.dart'; |
| 25 import 'utils.dart'; | 24 import 'utils.dart'; |
| 26 | 25 |
| 27 main() { | 26 main() { |
| 28 initializeTestEnvironment(); | 27 initializeTestEnvironment(); |
| 29 defineReflectiveTests(AbstractContextManagerTest); | 28 defineReflectiveTests(AbstractContextManagerTest); |
| 30 } | 29 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 String folderPath = posix.joinAll(pathComponents); | 77 String folderPath = posix.joinAll(pathComponents); |
| 79 resourceProvider.newFolder(folderPath); | 78 resourceProvider.newFolder(folderPath); |
| 80 return folderPath; | 79 return folderPath; |
| 81 } | 80 } |
| 82 | 81 |
| 83 UriResolver providePackageResolver(Folder folder) { | 82 UriResolver providePackageResolver(Folder folder) { |
| 84 return packageResolver; | 83 return packageResolver; |
| 85 } | 84 } |
| 86 | 85 |
| 87 void setUp() { | 86 void setUp() { |
| 88 ExtensionManager extensionManager = new ExtensionManager(); | |
| 89 extensionManager.processPlugins(AnalysisEngine.instance.supportedPlugins); | |
| 90 resourceProvider = new MemoryResourceProvider(); | 87 resourceProvider = new MemoryResourceProvider(); |
| 91 packageMapProvider = new MockPackageMapProvider(); | 88 packageMapProvider = new MockPackageMapProvider(); |
| 92 manager = new ContextManagerImpl(resourceProvider, providePackageResolver, | 89 manager = new ContextManagerImpl(resourceProvider, providePackageResolver, |
| 93 packageMapProvider, InstrumentationService.NULL_SERVICE); | 90 packageMapProvider, InstrumentationService.NULL_SERVICE); |
| 94 callbacks = new TestContextManagerCallbacks(resourceProvider); | 91 callbacks = new TestContextManagerCallbacks(resourceProvider); |
| 95 manager.callbacks = callbacks; | 92 manager.callbacks = callbacks; |
| 96 resourceProvider.newFolder(projPath); | 93 resourceProvider.newFolder(projPath); |
| 97 } | 94 } |
| 98 | 95 |
| 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 | |
| 119 void test_contextsInAnalysisRoot_nestedContext() { | |
| 120 String subProjPath = posix.join(projPath, 'subproj'); | |
| 121 Folder subProjFolder = resourceProvider.newFolder(subProjPath); | |
| 122 resourceProvider.newFile( | |
| 123 posix.join(subProjPath, 'pubspec.yaml'), 'contents'); | |
| 124 String subProjFilePath = posix.join(subProjPath, 'file.dart'); | |
| 125 resourceProvider.newFile(subProjFilePath, 'contents'); | |
| 126 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | |
| 127 // Make sure that there really are contexts for both the main project and | |
| 128 // the subproject. | |
| 129 Folder projFolder = resourceProvider.getFolder(projPath); | |
| 130 ContextInfo projContextInfo = manager.getContextInfoFor(projFolder); | |
| 131 expect(projContextInfo, isNotNull); | |
| 132 expect(projContextInfo.folder, projFolder); | |
| 133 ContextInfo subProjContextInfo = manager.getContextInfoFor(subProjFolder); | |
| 134 expect(subProjContextInfo, isNotNull); | |
| 135 expect(subProjContextInfo.folder, subProjFolder); | |
| 136 expect(projContextInfo.context != subProjContextInfo.context, isTrue); | |
| 137 // Check that contextsInAnalysisRoot() works. | |
| 138 List<AnalysisContext> contexts = manager.contextsInAnalysisRoot(projFolder); | |
| 139 expect(contexts, hasLength(2)); | |
| 140 expect(contexts, contains(projContextInfo.context)); | |
| 141 expect(contexts, contains(subProjContextInfo.context)); | |
| 142 } | |
| 143 | |
| 144 test_embedder_options() async { | 96 test_embedder_options() async { |
| 145 // Create files. | 97 // Create files. |
| 146 String libPath = newFolder([projPath, LIB_NAME]); | 98 String libPath = newFolder([projPath, LIB_NAME]); |
| 147 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 99 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
| 148 newFile([projPath, 'test', 'test.dart']); | 100 newFile([projPath, 'test', 'test.dart']); |
| 149 newFile([sdkExtPath, 'entry.dart']); | 101 newFile([sdkExtPath, 'entry.dart']); |
| 150 // Setup _embedder.yaml. | 102 // Setup _embedder.yaml. |
| 151 newFile( | 103 newFile( |
| 152 [libPath, '_embedder.yaml'], | 104 [libPath, '_embedder.yaml'], |
| 153 r''' | 105 r''' |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 ['x'] | 160 ['x'] |
| 209 ])), | 161 ])), |
| 210 isTrue); | 162 isTrue); |
| 211 | 163 |
| 212 // Sanity check embedder libs. | 164 // Sanity check embedder libs. |
| 213 var source = context.sourceFactory.forUri('dart:foobar'); | 165 var source = context.sourceFactory.forUri('dart:foobar'); |
| 214 expect(source, isNotNull); | 166 expect(source, isNotNull); |
| 215 expect(source.fullName, '/my/proj/sdk_ext/entry.dart'); | 167 expect(source.fullName, '/my/proj/sdk_ext/entry.dart'); |
| 216 } | 168 } |
| 217 | 169 |
| 170 test_analysis_options_parse_failure() async { |
| 171 // Create files. |
| 172 String libPath = newFolder([projPath, LIB_NAME]); |
| 173 newFile([libPath, 'main.dart']); |
| 174 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
| 175 newFile([sdkExtPath, 'entry.dart']); |
| 176 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
| 177 newFile([sdkExtSrcPath, 'part.dart']); |
| 178 // Setup analysis options file with ignore list. |
| 179 newFile( |
| 180 [projPath, '.analysis_options'], |
| 181 r''' |
| 182 ; |
| 183 '''); |
| 184 // Setup context. |
| 185 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 186 |
| 187 // No error means success. |
| 188 } |
| 189 |
| 190 void test_contextsInAnalysisRoot_nestedContext() { |
| 191 String subProjPath = posix.join(projPath, 'subproj'); |
| 192 Folder subProjFolder = resourceProvider.newFolder(subProjPath); |
| 193 resourceProvider.newFile( |
| 194 posix.join(subProjPath, 'pubspec.yaml'), 'contents'); |
| 195 String subProjFilePath = posix.join(subProjPath, 'file.dart'); |
| 196 resourceProvider.newFile(subProjFilePath, 'contents'); |
| 197 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 198 // Make sure that there really are contexts for both the main project and |
| 199 // the subproject. |
| 200 Folder projFolder = resourceProvider.getFolder(projPath); |
| 201 ContextInfo projContextInfo = manager.getContextInfoFor(projFolder); |
| 202 expect(projContextInfo, isNotNull); |
| 203 expect(projContextInfo.folder, projFolder); |
| 204 ContextInfo subProjContextInfo = manager.getContextInfoFor(subProjFolder); |
| 205 expect(subProjContextInfo, isNotNull); |
| 206 expect(subProjContextInfo.folder, subProjFolder); |
| 207 expect(projContextInfo.context != subProjContextInfo.context, isTrue); |
| 208 // Check that contextsInAnalysisRoot() works. |
| 209 List<AnalysisContext> contexts = manager.contextsInAnalysisRoot(projFolder); |
| 210 expect(contexts, hasLength(2)); |
| 211 expect(contexts, contains(projContextInfo.context)); |
| 212 expect(contexts, contains(subProjContextInfo.context)); |
| 213 } |
| 214 |
| 218 test_embedder_packagespec() async { | 215 test_embedder_packagespec() async { |
| 219 // Create files. | 216 // Create files. |
| 220 String libPath = newFolder([projPath, LIB_NAME]); | 217 String libPath = newFolder([projPath, LIB_NAME]); |
| 221 newFile([libPath, 'main.dart']); | 218 newFile([libPath, 'main.dart']); |
| 222 newFile([libPath, 'nope.dart']); | 219 newFile([libPath, 'nope.dart']); |
| 223 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 220 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
| 224 newFile([sdkExtPath, 'entry.dart']); | 221 newFile([sdkExtPath, 'entry.dart']); |
| 225 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 222 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
| 226 newFile([sdkExtSrcPath, 'part.dart']); | 223 newFile([sdkExtSrcPath, 'part.dart']); |
| 227 // Setup _embedder.yaml. | 224 // Setup _embedder.yaml. |
| (...skipping 1910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2138 class TestUriResolver extends UriResolver { | 2135 class TestUriResolver extends UriResolver { |
| 2139 Map<Uri, Source> uriMap; | 2136 Map<Uri, Source> uriMap; |
| 2140 | 2137 |
| 2141 TestUriResolver(this.uriMap); | 2138 TestUriResolver(this.uriMap); |
| 2142 | 2139 |
| 2143 @override | 2140 @override |
| 2144 Source resolveAbsolute(Uri uri, [Uri actualUri]) { | 2141 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
| 2145 return uriMap[uri]; | 2142 return uriMap[uri]; |
| 2146 } | 2143 } |
| 2147 } | 2144 } |
| OLD | NEW |