| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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.src.task.abstract_context_test; | 5 library analyzer.test.src.context.abstract_context; |
| 6 | 6 |
| 7 import 'package:analyzer/dart/ast/ast.dart'; |
| 8 import 'package:analyzer/dart/element/element.dart'; |
| 9 import 'package:analyzer/dart/element/visitor.dart'; |
| 7 import 'package:analyzer/file_system/file_system.dart'; | 10 import 'package:analyzer/file_system/file_system.dart'; |
| 8 import 'package:analyzer/file_system/memory_file_system.dart'; | 11 import 'package:analyzer/file_system/memory_file_system.dart'; |
| 9 import 'package:analyzer/src/context/cache.dart'; | 12 import 'package:analyzer/src/context/cache.dart'; |
| 10 import 'package:analyzer/src/context/context.dart'; | 13 import 'package:analyzer/src/context/context.dart'; |
| 11 import 'package:analyzer/src/generated/element.dart'; | 14 import 'package:analyzer/src/generated/engine.dart'; |
| 12 import 'package:analyzer/src/generated/engine.dart' | |
| 13 hide AnalysisCache, AnalysisContextImpl, AnalysisTask; | |
| 14 import 'package:analyzer/src/generated/sdk.dart'; | 15 import 'package:analyzer/src/generated/sdk.dart'; |
| 15 import 'package:analyzer/src/generated/source.dart'; | 16 import 'package:analyzer/src/generated/source.dart'; |
| 16 import 'package:analyzer/src/task/driver.dart'; | 17 import 'package:analyzer/src/task/driver.dart'; |
| 17 import 'package:analyzer/task/model.dart'; | 18 import 'package:analyzer/task/model.dart'; |
| 19 import 'package:plugin/manager.dart'; |
| 20 import 'package:plugin/plugin.dart'; |
| 18 import 'package:unittest/unittest.dart'; | 21 import 'package:unittest/unittest.dart'; |
| 19 | 22 |
| 20 import 'mock_sdk.dart'; | 23 import 'mock_sdk.dart'; |
| 21 | 24 |
| 25 /** |
| 26 * Finds an [Element] with the given [name]. |
| 27 */ |
| 28 Element findChildElement(Element root, String name, [ElementKind kind]) { |
| 29 Element result = null; |
| 30 root.accept(new _ElementVisitorFunctionWrapper((Element element) { |
| 31 if (element.name != name) { |
| 32 return; |
| 33 } |
| 34 if (kind != null && element.kind != kind) { |
| 35 return; |
| 36 } |
| 37 result = element; |
| 38 })); |
| 39 return result; |
| 40 } |
| 41 |
| 42 /** |
| 43 * A function to be called for every [Element]. |
| 44 */ |
| 45 typedef void _ElementVisitorFunction(Element element); |
| 46 |
| 22 class AbstractContextTest { | 47 class AbstractContextTest { |
| 48 static final MockSdk SHARED_MOCK_SDK = new MockSdk(); |
| 49 static final MockSdk SHARED_STRONG_MOCK_SDK = new MockSdk(); |
| 50 |
| 23 MemoryResourceProvider resourceProvider = new MemoryResourceProvider(); | 51 MemoryResourceProvider resourceProvider = new MemoryResourceProvider(); |
| 24 | 52 |
| 25 DartSdk sdk = new MockSdk(); | 53 DartSdk sdk; |
| 26 SourceFactory sourceFactory; | 54 SourceFactory sourceFactory; |
| 27 AnalysisContextImpl context; | 55 AnalysisContextImpl context; |
| 28 AnalysisCache analysisCache; | 56 AnalysisCache analysisCache; |
| 29 AnalysisDriver analysisDriver; | 57 AnalysisDriver analysisDriver; |
| 30 | 58 |
| 59 UriResolver sdkResolver; |
| 60 UriResolver resourceResolver; |
| 61 |
| 31 AnalysisTask task; | 62 AnalysisTask task; |
| 32 Map<ResultDescriptor<dynamic>, dynamic> oldOutputs; | 63 Map<ResultDescriptor<dynamic>, dynamic> oldOutputs; |
| 33 Map<ResultDescriptor<dynamic>, dynamic> outputs; | 64 Map<ResultDescriptor<dynamic>, dynamic> outputs; |
| 34 | 65 |
| 35 Source addSource(String path, String contents) { | 66 Source addSource(String path, String contents) { |
| 36 Source source = newSource(path, contents); | 67 Source source = newSource(path, contents); |
| 37 ChangeSet changeSet = new ChangeSet(); | 68 ChangeSet changeSet = new ChangeSet(); |
| 38 changeSet.addedSource(source); | 69 changeSet.addedSource(source); |
| 39 context.applyChanges(changeSet); | 70 context.applyChanges(changeSet); |
| 40 return source; | 71 return source; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 outputs = task.outputs; | 116 outputs = task.outputs; |
| 86 for (ResultDescriptor descriptor in task.descriptor.results) { | 117 for (ResultDescriptor descriptor in task.descriptor.results) { |
| 87 expect(outputs, contains(descriptor)); | 118 expect(outputs, contains(descriptor)); |
| 88 } | 119 } |
| 89 } | 120 } |
| 90 | 121 |
| 91 AnalysisContextImpl createAnalysisContext() { | 122 AnalysisContextImpl createAnalysisContext() { |
| 92 return new AnalysisContextImpl(); | 123 return new AnalysisContextImpl(); |
| 93 } | 124 } |
| 94 | 125 |
| 126 DartSdk createDartSdk() => new MockSdk(resourceProvider: resourceProvider); |
| 127 |
| 95 Source newSource(String path, [String content = '']) { | 128 Source newSource(String path, [String content = '']) { |
| 96 File file = resourceProvider.newFile(path, content); | 129 File file = resourceProvider.newFile(path, content); |
| 97 return file.createSource(); | 130 return file.createSource(); |
| 98 } | 131 } |
| 99 | 132 |
| 100 List<Source> newSources(Map<String, String> sourceMap) { | 133 List<Source> newSources(Map<String, String> sourceMap) { |
| 101 List<Source> sources = <Source>[]; | 134 List<Source> sources = <Source>[]; |
| 102 sourceMap.forEach((String path, String content) { | 135 sourceMap.forEach((String path, String content) { |
| 103 Source source = newSource(path, content); | 136 Source source = newSource(path, content); |
| 104 sources.add(source); | 137 sources.add(source); |
| 105 }); | 138 }); |
| 106 return sources; | 139 return sources; |
| 107 } | 140 } |
| 108 | 141 |
| 109 void prepareAnalysisContext([AnalysisOptions options]) { | 142 void prepareAnalysisContext([AnalysisOptions options]) { |
| 110 sourceFactory = new SourceFactory(<UriResolver>[ | 143 sdk = createDartSdk(); |
| 111 new DartUriResolver(sdk), | 144 sdkResolver = new DartUriResolver(sdk); |
| 112 new ResourceUriResolver(resourceProvider) | 145 resourceResolver = new ResourceUriResolver(resourceProvider); |
| 113 ]); | 146 sourceFactory = new SourceFactory( |
| 147 <UriResolver>[sdkResolver, resourceResolver], null, resourceProvider); |
| 114 context = createAnalysisContext(); | 148 context = createAnalysisContext(); |
| 115 if (options != null) { | 149 if (options != null) { |
| 116 context.analysisOptions = options; | 150 context.analysisOptions = options; |
| 117 } | 151 } |
| 118 context.sourceFactory = sourceFactory; | 152 context.sourceFactory = sourceFactory; |
| 119 analysisCache = context.analysisCache; | 153 analysisCache = context.analysisCache; |
| 120 analysisDriver = context.driver; | 154 analysisDriver = context.driver; |
| 121 } | 155 } |
| 122 | 156 |
| 157 CompilationUnit resolveLibraryUnit(Source source) { |
| 158 return context.resolveCompilationUnit2(source, source); |
| 159 } |
| 160 |
| 123 void setUp() { | 161 void setUp() { |
| 162 List<Plugin> plugins = <Plugin>[]; |
| 163 plugins.addAll(AnalysisEngine.instance.requiredPlugins); |
| 164 plugins.add(AnalysisEngine.instance.commandLinePlugin); |
| 165 plugins.add(AnalysisEngine.instance.optionsPlugin); |
| 166 |
| 167 ExtensionManager manager = new ExtensionManager(); |
| 168 manager.processPlugins(plugins); |
| 169 |
| 124 prepareAnalysisContext(); | 170 prepareAnalysisContext(); |
| 125 } | 171 } |
| 126 | 172 |
| 127 void tearDown() {} | 173 void tearDown() {} |
| 128 } | 174 } |
| 175 |
| 176 /** |
| 177 * Wraps the given [_ElementVisitorFunction] into an instance of |
| 178 * [GeneralizingElementVisitor]. |
| 179 */ |
| 180 class _ElementVisitorFunctionWrapper extends GeneralizingElementVisitor { |
| 181 final _ElementVisitorFunction function; |
| 182 |
| 183 _ElementVisitorFunctionWrapper(this.function); |
| 184 |
| 185 visitElement(Element element) { |
| 186 function(element); |
| 187 super.visitElement(element); |
| 188 } |
| 189 } |
| OLD | NEW |