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

Unified Diff: pkg/analyzer_plugin/test/support/abstract_context.dart

Issue 2860383002: Move ChangeBuilder to analyzer_plugin (Closed)
Patch Set: Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer_plugin/test/support/abstract_context.dart
diff --git a/pkg/analyzer_plugin/test/support/abstract_context.dart b/pkg/analyzer_plugin/test/support/abstract_context.dart
new file mode 100644
index 0000000000000000000000000000000000000000..55708d747c02ac5a04d7cfec8c74e2b693e76e62
--- /dev/null
+++ b/pkg/analyzer_plugin/test/support/abstract_context.dart
@@ -0,0 +1,172 @@
+// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:async';
+
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/visitor.dart';
+import 'package:analyzer/exception/exception.dart';
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/file_system/memory_file_system.dart';
+import 'package:analyzer/source/package_map_resolver.dart';
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart';
+import 'package:analyzer/src/dart/analysis/file_state.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/engine.dart' as engine;
+import 'package:analyzer/src/generated/sdk.dart';
+import 'package:analyzer/src/generated/source_io.dart';
+
+import 'mock_sdk.dart';
+
+/**
+ * Finds an [Element] with the given [name].
+ */
+Element findChildElement(Element root, String name, [ElementKind kind]) {
+ Element result = null;
+ root.accept(new _ElementVisitorFunctionWrapper((Element element) {
+ if (element.name != name) {
+ return;
+ }
+ if (kind != null && element.kind != kind) {
+ return;
+ }
+ result = element;
+ }));
+ return result;
+}
+
+/**
+ * A function to be called for every [Element].
+ */
+typedef void _ElementVisitorFunction(Element element);
+
+class AbstractContextTest {
+ MemoryResourceProvider provider;
+ DartSdk sdk;
+ Map<String, List<Folder>> packageMap;
+ UriResolver resourceResolver;
+
+ StringBuffer _logBuffer = new StringBuffer();
+ FileContentOverlay _fileContentOverlay = new FileContentOverlay();
+ AnalysisDriver _driver;
+
+ AnalysisDriver get driver => _driver;
+
+ Source addMetaPackageSource() => addPackageSource(
+ 'meta',
+ 'meta.dart',
+ r'''
+library meta;
+
+const Required required = const Required();
+
+class Required {
+ final String reason;
+ const Required([this.reason]);
+}
+''');
+
+ Source addPackageSource(String packageName, String filePath, String content) {
+ packageMap[packageName] = [(newFolder('/pubcache/$packageName'))];
+ File file = newFile('/pubcache/$packageName/$filePath', content);
+ return file.createSource();
+ }
+
+ Source addSource(String path, String content, [Uri uri]) {
+ driver.addFile(path);
+ driver.changeFile(path);
+ _fileContentOverlay[path] = content;
+ return null;
+ }
+
+ File newFile(String path, [String content]) =>
+ provider.newFile(provider.convertPath(path), content ?? '');
+
+ Folder newFolder(String path) =>
+ provider.newFolder(provider.convertPath(path));
+
+ void processRequiredPlugins() {
+ AnalysisEngine.instance.processRequiredPlugins();
+ }
+
+ Future<CompilationUnit> resolveLibraryUnit(Source source) async {
+ return (await driver.getResult(source.fullName))?.unit;
+ }
+
+ void setUp() {
+ processRequiredPlugins();
+ setupResourceProvider();
+ sdk = new MockSdk(resourceProvider: provider);
+ resourceResolver = new ResourceUriResolver(provider);
+ packageMap = new Map<String, List<Folder>>();
+ PackageMapUriResolver packageResolver =
+ new PackageMapUriResolver(provider, packageMap);
+ SourceFactory sourceFactory = new SourceFactory(
+ [new DartUriResolver(sdk), packageResolver, resourceResolver]);
+ PerformanceLog log = new PerformanceLog(_logBuffer);
+ AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log);
+ _driver = new AnalysisDriver(
+ scheduler,
+ log,
+ provider,
+ new MemoryByteStore(),
+ _fileContentOverlay,
+ null,
+ sourceFactory,
+ new AnalysisOptionsImpl());
+ scheduler.start();
+ AnalysisEngine.instance.logger = PrintLogger.instance;
+ }
+
+ void setupResourceProvider() {
+ provider = new MemoryResourceProvider();
+ }
+
+ void tearDown() {
+ provider = null;
+ AnalysisEngine.instance.clearCaches();
+ AnalysisEngine.instance.logger = null;
+ }
+}
+
+/**
+ * Instances of the class [PrintLogger] print all of the errors.
+ */
+class PrintLogger implements Logger {
+ static final Logger instance = new PrintLogger();
+
+ @override
+ void logError(String message, [CaughtException exception]) {
+ print(message);
+ if (exception != null) {
+ print(exception);
+ }
+ }
+
+ @override
+ void logInformation(String message, [CaughtException exception]) {
+ print(message);
+ if (exception != null) {
+ print(exception);
+ }
+ }
+}
+
+/**
+ * Wraps the given [_ElementVisitorFunction] into an instance of
+ * [engine.GeneralizingElementVisitor].
+ */
+class _ElementVisitorFunctionWrapper extends GeneralizingElementVisitor {
+ final _ElementVisitorFunction function;
+
+ _ElementVisitorFunctionWrapper(this.function);
+
+ @override
+ visitElement(Element element) {
+ function(element);
+ super.visitElement(element);
+ }
+}
« no previous file with comments | « pkg/analyzer_plugin/test/src/utilities/test_all.dart ('k') | pkg/analyzer_plugin/test/support/mock_sdk.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698