| Index: pkg/analysis_server/test/abstract_context.dart
|
| diff --git a/pkg/analysis_server/test/abstract_context.dart b/pkg/analysis_server/test/abstract_context.dart
|
| index 2b7a648a1351c60fd68b2ea1cfaba52a779ed838..6375766f0757320dcfa7e5218af6aa8e00d755d9 100644
|
| --- a/pkg/analysis_server/test/abstract_context.dart
|
| +++ b/pkg/analysis_server/test/abstract_context.dart
|
| @@ -11,7 +11,11 @@ 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';
|
|
|
| @@ -46,7 +50,31 @@ class AbstractContextTest {
|
| MemoryResourceProvider provider;
|
| Map<String, List<Folder>> packageMap;
|
| UriResolver resourceResolver;
|
| - AnalysisContext context;
|
| +
|
| + AnalysisContext _context;
|
| +
|
| + StringBuffer _logBuffer = new StringBuffer();
|
| + FileContentOverlay _fileContentOverlay = new FileContentOverlay();
|
| + AnalysisDriver _driver;
|
| +
|
| + AnalysisContext get context {
|
| + if (enableNewAnalysisDriver) {
|
| + throw new StateError('Should not be used with the new analysis driver.');
|
| + }
|
| + return _context;
|
| + }
|
| +
|
| + AnalysisDriver get driver {
|
| + if (enableNewAnalysisDriver) {
|
| + return _driver;
|
| + }
|
| + throw new StateError('Should be used with the new analysis driver.');
|
| + }
|
| +
|
| + /**
|
| + * Return `true` if the new analysis driver should be used by these tests.
|
| + */
|
| + bool get enableNewAnalysisDriver => false;
|
|
|
| Source addPackageSource(String packageName, String filePath, String content) {
|
| packageMap[packageName] = [(newFolder('/pubcache/$packageName'))];
|
| @@ -55,13 +83,18 @@ class AbstractContextTest {
|
| }
|
|
|
| Source addSource(String path, String content, [Uri uri]) {
|
| - File file = newFile(path, content);
|
| - Source source = file.createSource(uri);
|
| - ChangeSet changeSet = new ChangeSet();
|
| - changeSet.addedSource(source);
|
| - context.applyChanges(changeSet);
|
| - context.setContents(source, content);
|
| - return source;
|
| + if (enableNewAnalysisDriver) {
|
| + _fileContentOverlay[path] = content;
|
| + return null;
|
| + } else {
|
| + File file = newFile(path, content);
|
| + Source source = file.createSource(uri);
|
| + ChangeSet changeSet = new ChangeSet();
|
| + changeSet.addedSource(source);
|
| + context.applyChanges(changeSet);
|
| + context.setContents(source, content);
|
| + return source;
|
| + }
|
| }
|
|
|
| File newFile(String path, [String content]) =>
|
| @@ -75,7 +108,7 @@ class AbstractContextTest {
|
| */
|
| void performAllAnalysisTasks() {
|
| while (true) {
|
| - AnalysisResult result = context.performAnalysisTask();
|
| + engine.AnalysisResult result = context.performAnalysisTask();
|
| if (!result.hasMoreWork) {
|
| break;
|
| }
|
| @@ -101,9 +134,24 @@ class AbstractContextTest {
|
| packageMap = new Map<String, List<Folder>>();
|
| PackageMapUriResolver packageResolver =
|
| new PackageMapUriResolver(provider, packageMap);
|
| - context = AnalysisEngine.instance.createAnalysisContext();
|
| - context.sourceFactory =
|
| + SourceFactory sourceFactory =
|
| new SourceFactory([SDK_RESOLVER, packageResolver, resourceResolver]);
|
| + if (enableNewAnalysisDriver) {
|
| + PerformanceLog log = new PerformanceLog(_logBuffer);
|
| + AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log);
|
| + _driver = new AnalysisDriver(
|
| + scheduler,
|
| + log,
|
| + provider,
|
| + new MemoryByteStore(),
|
| + _fileContentOverlay,
|
| + sourceFactory,
|
| + new AnalysisOptionsImpl());
|
| + scheduler.start();
|
| + } else {
|
| + _context = AnalysisEngine.instance.createAnalysisContext();
|
| + context.sourceFactory = sourceFactory;
|
| + }
|
| AnalysisEngine.instance.logger = PrintLogger.instance;
|
| }
|
|
|
| @@ -112,7 +160,7 @@ class AbstractContextTest {
|
| }
|
|
|
| void tearDown() {
|
| - context = null;
|
| + _context = null;
|
| provider = null;
|
| AnalysisEngine.instance.logger = null;
|
| }
|
|
|