| 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'; |
| 20 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 21 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 21 import 'package:unittest/unittest.dart'; | 22 import 'package:unittest/unittest.dart'; |
| 22 | 23 |
| 23 import 'mocks.dart'; | 24 import 'mocks.dart'; |
| 24 import 'utils.dart'; | 25 import 'utils.dart'; |
| 25 | 26 |
| 26 main() { | 27 main() { |
| 27 initializeTestEnvironment(); | 28 initializeTestEnvironment(); |
| 28 defineReflectiveTests(AbstractContextManagerTest); | 29 defineReflectiveTests(AbstractContextManagerTest); |
| 29 } | 30 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 String folderPath = posix.joinAll(pathComponents); | 78 String folderPath = posix.joinAll(pathComponents); |
| 78 resourceProvider.newFolder(folderPath); | 79 resourceProvider.newFolder(folderPath); |
| 79 return folderPath; | 80 return folderPath; |
| 80 } | 81 } |
| 81 | 82 |
| 82 UriResolver providePackageResolver(Folder folder) { | 83 UriResolver providePackageResolver(Folder folder) { |
| 83 return packageResolver; | 84 return packageResolver; |
| 84 } | 85 } |
| 85 | 86 |
| 86 void setUp() { | 87 void setUp() { |
| 88 ExtensionManager extensionManager = new ExtensionManager(); |
| 89 extensionManager.processPlugins(AnalysisEngine.instance.supportedPlugins); |
| 87 resourceProvider = new MemoryResourceProvider(); | 90 resourceProvider = new MemoryResourceProvider(); |
| 88 packageMapProvider = new MockPackageMapProvider(); | 91 packageMapProvider = new MockPackageMapProvider(); |
| 89 manager = new ContextManagerImpl(resourceProvider, providePackageResolver, | 92 manager = new ContextManagerImpl(resourceProvider, providePackageResolver, |
| 90 packageMapProvider, InstrumentationService.NULL_SERVICE); | 93 packageMapProvider, InstrumentationService.NULL_SERVICE); |
| 91 callbacks = new TestContextManagerCallbacks(resourceProvider); | 94 callbacks = new TestContextManagerCallbacks(resourceProvider); |
| 92 manager.callbacks = callbacks; | 95 manager.callbacks = callbacks; |
| 93 resourceProvider.newFolder(projPath); | 96 resourceProvider.newFolder(projPath); |
| 94 } | 97 } |
| 95 | 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 |
| 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 |
| 96 test_embedder_options() async { | 144 test_embedder_options() async { |
| 97 // Create files. | 145 // Create files. |
| 98 String libPath = newFolder([projPath, LIB_NAME]); | 146 String libPath = newFolder([projPath, LIB_NAME]); |
| 99 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 147 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
| 100 newFile([projPath, 'test', 'test.dart']); | 148 newFile([projPath, 'test', 'test.dart']); |
| 101 newFile([sdkExtPath, 'entry.dart']); | 149 newFile([sdkExtPath, 'entry.dart']); |
| 102 // Setup _embedder.yaml. | 150 // Setup _embedder.yaml. |
| 103 newFile( | 151 newFile( |
| 104 [libPath, '_embedder.yaml'], | 152 [libPath, '_embedder.yaml'], |
| 105 r''' | 153 r''' |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 ['x'] | 208 ['x'] |
| 161 ])), | 209 ])), |
| 162 isTrue); | 210 isTrue); |
| 163 | 211 |
| 164 // Sanity check embedder libs. | 212 // Sanity check embedder libs. |
| 165 var source = context.sourceFactory.forUri('dart:foobar'); | 213 var source = context.sourceFactory.forUri('dart:foobar'); |
| 166 expect(source, isNotNull); | 214 expect(source, isNotNull); |
| 167 expect(source.fullName, '/my/proj/sdk_ext/entry.dart'); | 215 expect(source.fullName, '/my/proj/sdk_ext/entry.dart'); |
| 168 } | 216 } |
| 169 | 217 |
| 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 | |
| 215 test_embedder_packagespec() async { | 218 test_embedder_packagespec() async { |
| 216 // Create files. | 219 // Create files. |
| 217 String libPath = newFolder([projPath, LIB_NAME]); | 220 String libPath = newFolder([projPath, LIB_NAME]); |
| 218 newFile([libPath, 'main.dart']); | 221 newFile([libPath, 'main.dart']); |
| 219 newFile([libPath, 'nope.dart']); | 222 newFile([libPath, 'nope.dart']); |
| 220 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 223 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
| 221 newFile([sdkExtPath, 'entry.dart']); | 224 newFile([sdkExtPath, 'entry.dart']); |
| 222 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 225 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
| 223 newFile([sdkExtSrcPath, 'part.dart']); | 226 newFile([sdkExtSrcPath, 'part.dart']); |
| 224 // Setup _embedder.yaml. | 227 // Setup _embedder.yaml. |
| (...skipping 1910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2135 class TestUriResolver extends UriResolver { | 2138 class TestUriResolver extends UriResolver { |
| 2136 Map<Uri, Source> uriMap; | 2139 Map<Uri, Source> uriMap; |
| 2137 | 2140 |
| 2138 TestUriResolver(this.uriMap); | 2141 TestUriResolver(this.uriMap); |
| 2139 | 2142 |
| 2140 @override | 2143 @override |
| 2141 Source resolveAbsolute(Uri uri, [Uri actualUri]) { | 2144 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
| 2142 return uriMap[uri]; | 2145 return uriMap[uri]; |
| 2143 } | 2146 } |
| 2144 } | 2147 } |
| OLD | NEW |