| Index: pkg/analyzer/test/src/dart/analysis/driver_test.dart
|
| diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
|
| index 33551dbe45b2cb6d97eaffe8d57f73a745394bce..800f4c5f8bc2ef36c8619d2906868c41bcfa5fe4 100644
|
| --- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
|
| +++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
|
| @@ -39,8 +39,9 @@ import 'base.dart';
|
|
|
| main() {
|
| defineReflectiveSuite(() {
|
| - defineReflectiveTests(AnalysisDriverTest);
|
| defineReflectiveTests(AnalysisDriverSchedulerTest);
|
| + defineReflectiveTests(AnalysisDriverTest);
|
| + defineReflectiveTests(CacheAllAnalysisDriverTest);
|
| });
|
| }
|
|
|
| @@ -2603,4 +2604,97 @@ class F extends X {}
|
| }
|
| }
|
|
|
| +@reflectiveTest
|
| +class CacheAllAnalysisDriverTest extends BaseAnalysisDriverTest {
|
| + bool get disableChangesAndCacheAllResults => true;
|
| +
|
| + test_addFile() async {
|
| + var a = _p('/test/lib/a.dart');
|
| + var b = _p('/test/lib/b.dart');
|
| + driver.addFile(a);
|
| + driver.addFile(b);
|
| + }
|
| +
|
| + test_changeFile() async {
|
| + var path = _p('/test.dart');
|
| + expect(() {
|
| + driver.changeFile(path);
|
| + }, throwsStateError);
|
| + }
|
| +
|
| + test_getResult_libraryUnits() async {
|
| + var lib = _p('/lib.dart');
|
| + var part1 = _p('/part1.dart');
|
| + var part2 = _p('/part2.dart');
|
| +
|
| + provider.newFile(
|
| + lib,
|
| + r'''
|
| +library test;
|
| +part 'part1.dart';
|
| +part 'part2.dart';
|
| +''');
|
| + provider.newFile(part1, 'part of test; class A {}');
|
| + provider.newFile(part2, 'part of test; class B {}');
|
| +
|
| + driver.addFile(lib);
|
| + driver.addFile(part1);
|
| + driver.addFile(part2);
|
| +
|
| + // No analyzed libraries initially.
|
| + expect(driver.test.numOfAnalyzedLibraries, 0);
|
| +
|
| + AnalysisResult libResult = await driver.getResult(lib);
|
| + AnalysisResult partResult1 = await driver.getResult(part1);
|
| + AnalysisResult partResult2 = await driver.getResult(part2);
|
| +
|
| + // Just one library was analyzed, results for parts are cached.
|
| + expect(driver.test.numOfAnalyzedLibraries, 1);
|
| +
|
| + expect(libResult.path, lib);
|
| + expect(partResult1.path, part1);
|
| + expect(partResult2.path, part2);
|
| +
|
| + expect(libResult.unit, isNotNull);
|
| + expect(partResult1.unit, isNotNull);
|
| + expect(partResult2.unit, isNotNull);
|
| +
|
| + // The parts uses the same resynthesized library element.
|
| + var libLibrary = libResult.unit.element.library;
|
| + var partLibrary1 = partResult1.unit.element.library;
|
| + var partLibrary2 = partResult2.unit.element.library;
|
| + expect(partLibrary1, same(libLibrary));
|
| + expect(partLibrary2, same(libLibrary));
|
| + }
|
| +
|
| + test_getResult_singleFile() async {
|
| + var path = _p('/test.dart');
|
| + provider.newFile(path, 'main() {}');
|
| + driver.addFile(path);
|
| +
|
| + AnalysisResult result1 = await driver.getResult(path);
|
| + expect(driver.test.numOfAnalyzedLibraries, 1);
|
| + var unit1 = result1.unit;
|
| + var unitElement1 = unit1.element;
|
| + expect(result1.path, path);
|
| + expect(unit1, isNotNull);
|
| + expect(unitElement1, isNotNull);
|
| +
|
| + AnalysisResult result2 = await driver.getResult(path);
|
| + expect(driver.test.numOfAnalyzedLibraries, 1);
|
| + expect(result2.path, path);
|
| + expect(result2.unit, same(unit1));
|
| + expect(result2.unit.element, same(unitElement1));
|
| + }
|
| +
|
| + test_removeFile() async {
|
| + var path = _p('/test.dart');
|
| + expect(() {
|
| + driver.removeFile(path);
|
| + }, throwsStateError);
|
| + }
|
| +
|
| + String _p(String path) => provider.convertPath(path);
|
| +}
|
| +
|
| class _SourceMock extends TypedMock implements Source {}
|
|
|