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

Unified Diff: pkg/analyzer/test/src/task/strong/strong_test_helper.dart

Issue 2715533008: Run src/task/strong tests with analysis driver. (Closed)
Patch Set: Created 3 years, 10 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/test/src/task/strong/strong_test_helper.dart
diff --git a/pkg/analyzer/test/src/task/strong/strong_test_helper.dart b/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
index 8361c123e80264d4d20ac68a0d1d9ad942e1b493..dddce076a27577ce1f2abebc618266b6198165fe 100644
--- a/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
+++ b/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
@@ -17,7 +17,9 @@ import 'package:analyzer/error/listener.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/source/error_processor.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/dart/ast/token.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/engine.dart';
@@ -226,6 +228,9 @@ class AbstractStrongTest {
MemoryResourceProvider _resourceProvider = new MemoryResourceProvider();
bool _checkCalled = false;
+ AnalysisContext _context = null;
+ AnalysisDriver _driver = null;
+
bool get enableNewAnalysisDriver => false;
/// Adds a file to check. The file should contain:
@@ -287,18 +292,31 @@ class AbstractStrongTest {
}
CompilationUnit mainUnit;
- AnalysisContext context = null;
- AnalysisDriver driver = null;
if (enableNewAnalysisDriver) {
- // TODO(scheglov)
+ StringBuffer logBuffer = new StringBuffer();
+ FileContentOverlay fileContentOverlay = new FileContentOverlay();
+ PerformanceLog log = new PerformanceLog(logBuffer);
+ AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log);
+ _driver = new AnalysisDriver(
+ scheduler,
+ log,
+ _resourceProvider,
+ new MemoryByteStore(),
+ fileContentOverlay,
+ 'test',
+ sourceFactory,
+ analysisOptions);
+ scheduler.start();
+
+ mainUnit = (await _driver.getResult(mainFile.path)).unit;
} else {
- context = AnalysisEngine.instance.createAnalysisContext();
- context.analysisOptions = analysisOptions;
- context.sourceFactory = sourceFactory;
+ _context = AnalysisEngine.instance.createAnalysisContext();
+ _context.analysisOptions = analysisOptions;
+ _context.sourceFactory = sourceFactory;
// Run the checker on /main.dart.
Source mainSource = sourceFactory.forUri2(mainFile.toUri());
- mainUnit = context.resolveCompilationUnit2(mainSource, mainSource);
+ mainUnit = _context.resolveCompilationUnit2(mainSource, mainSource);
}
var collector = new _ErrorCollector(analysisOptions);
@@ -318,7 +336,7 @@ class AbstractStrongTest {
continue;
}
- var analysisResult = await _resolve(context, driver, source);
+ var analysisResult = await _resolve(source);
errors.addAll(analysisResult.errors.where((e) =>
// TODO(jmesserly): these are usually intentional dynamic calls.
@@ -351,18 +369,19 @@ class AbstractStrongTest {
void tearDown() {
// This is a sanity check, in case only addFile is called.
expect(_checkCalled, true, reason: 'must call check() method in test case');
+ _context?.dispose();
+ _driver?.dispose();
AnalysisEngine.instance.clearCaches();
}
- Future<_TestAnalysisResult> _resolve(
- AnalysisContext context, AnalysisDriver driver, Source source) async {
+ Future<_TestAnalysisResult> _resolve(Source source) async {
if (enableNewAnalysisDriver) {
- // TODO(scheglov) implement
- throw new UnimplementedError();
+ var result = await _driver.getResult(source.fullName);
+ return new _TestAnalysisResult(source, result.unit, result.errors);
} else {
- List<Source> libraries = context.getLibrariesContaining(source);
- var unit = context.resolveCompilationUnit2(source, libraries.single);
- var errors = context.computeErrors(source);
+ List<Source> libraries = _context.getLibrariesContaining(source);
+ var unit = _context.resolveCompilationUnit2(source, libraries.single);
+ var errors = _context.computeErrors(source);
return new _TestAnalysisResult(source, unit, errors);
}
}

Powered by Google App Engine
This is Rietveld 408576698