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

Unified Diff: pkg/analyzer/test/src/dart/analysis/driver_test.dart

Issue 2665263002: Streamline AnalysisDriver status tracking. (Closed)
Patch Set: Created 3 years, 11 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/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 1010176270fb49f29dc820bff0f661c5cc3e6dbd..0b49859f0bce3d599cbaa745ea6e3a05fd2ed9d0 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -112,8 +112,7 @@ class AnalysisDriverSchedulerTest {
AnalysisResult result = await driver2.getResult(b);
expect(result.path, b);
- await driver1.status.firstWhere((status) => status.isIdle);
- await driver2.status.firstWhere((status) => status.isIdle);
+ await scheduler.status.firstWhere((status) => status.isIdle);
expect(allResults, hasLength(3));
expect(allResults[0].path, b);
@@ -134,8 +133,7 @@ class AnalysisDriverSchedulerTest {
driver1.priorityFiles = [a];
driver2.priorityFiles = [a];
- await driver1.status.firstWhere((status) => status.isIdle);
- await driver2.status.firstWhere((status) => status.isIdle);
+ await scheduler.status.firstWhere((status) => status.isIdle);
expect(allResults, hasLength(2));
expect(allResults[0].path, a);
@@ -155,8 +153,7 @@ class AnalysisDriverSchedulerTest {
driver1.priorityFiles = [b];
driver2.priorityFiles = [b];
- await driver1.status.firstWhere((status) => status.isIdle);
- await driver2.status.firstWhere((status) => status.isIdle);
+ await scheduler.status.firstWhere((status) => status.isIdle);
expect(allResults, hasLength(2));
expect(allResults[0].path, b);
@@ -179,8 +176,7 @@ class AnalysisDriverSchedulerTest {
driver1.priorityFiles = [a, c];
driver2.priorityFiles = [a, c];
- await driver1.status.firstWhere((status) => status.isIdle);
- await driver2.status.firstWhere((status) => status.isIdle);
+ await scheduler.status.firstWhere((status) => status.isIdle);
expect(allResults, hasLength(3));
expect(allResults[0].path, a);
@@ -291,7 +287,7 @@ import 'a.dart';
}
// Initial analysis, 'b' does not use 'a', so there is a hint.
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
assertNumberOfErrorsInB(1);
// Update 'b' to use 'a', no more hints.
@@ -304,7 +300,7 @@ main() {
}
''');
driver.changeFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
assertNumberOfErrorsInB(0);
// Change 'b' content so that it has a hint.
@@ -317,7 +313,7 @@ import 'a.dart';
''');
driver.removeFile(b);
driver.addFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
assertNumberOfErrorsInB(1);
}
@@ -332,7 +328,7 @@ import 'a.dart';
// Now remove 'a'.
driver.removeFile(a);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
// Only 'b' has been analyzed, because 'a' was removed before we started.
expect(allResults, hasLength(1));
@@ -441,7 +437,7 @@ var A = B;
driver.addFile(a);
// We have a result only for "a".
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
{
AnalysisResult ar = allResults.firstWhere((r) => r.path == a);
@@ -458,7 +454,7 @@ var A = B;
// While "b" is not analyzed explicitly, it is analyzed implicitly.
// The change causes "a" to be reanalyzed.
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
{
AnalysisResult ar = allResults.firstWhere((r) => r.path == a);
@@ -474,14 +470,14 @@ var A = B;
driver.addFile(a);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
allResults.clear();
// Change "b" and notify.
// Nothing depends on "b", so nothing is analyzed.
provider.updateFile(b, 'class B2 {}');
driver.changeFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, isEmpty);
// This should not add "b" to the file state.
@@ -508,7 +504,7 @@ var B1 = A1;
driver.priorityFiles = [a, b];
driver.addFile(a);
driver.addFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
// We have results for both "a" and "b".
expect(allResults, hasLength(2));
@@ -535,7 +531,7 @@ var A2 = B1;
// We again get results for both "a" and "b".
// The results are consistent.
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(2));
{
AnalysisResult ar = allResults.firstWhere((r) => r.path == a);
@@ -553,7 +549,7 @@ var A2 = B1;
// Initial analysis.
{
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
AnalysisResult result = allResults[0];
expect(result.path, testFile);
@@ -576,7 +572,7 @@ var A2 = B1;
// We get a new result.
{
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
AnalysisResult result = allResults[0];
expect(result.path, testFile);
@@ -671,7 +667,7 @@ bbb() {}
driver.addFile(templatePath);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allExceptions, isEmpty);
expect(allResults, isEmpty);
@@ -687,7 +683,7 @@ bbb() {}
driver.priorityFiles = [templatePath];
driver.changeFile(templatePath);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allExceptions, isEmpty);
expect(allResults, isEmpty);
@@ -771,7 +767,7 @@ main() {
expect(f.returnType.type.toString(), 'int');
// The same result is also received through the stream.
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, [result]);
}
@@ -790,7 +786,7 @@ main() {
''');
driver.addFile(a);
driver.addFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
AnalysisResult result = await driver.getResult(b);
expect(result.errors, isEmpty);
@@ -848,7 +844,7 @@ class C {
}
''',
priority: true);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
AnalysisResult result = await driver.getResult(testFile);
expect(_getClassFieldType(result.unit, 'C', 'f'), 'int');
@@ -865,7 +861,7 @@ class B extends A {
}
''',
priority: true);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
AnalysisResult result = await driver.getResult(testFile);
expect(_getClassMethodReturnType(result.unit, 'A', 'm'), 'int');
@@ -1022,7 +1018,7 @@ var VC = new A<double>();
driver.addFile(a);
driver.addFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
{
AnalysisResult result = await driver.getResult(b);
@@ -1058,7 +1054,7 @@ var B1 = A1;
driver.addFile(a);
driver.addFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
{
AnalysisResult result = await driver.getResult(a);
@@ -1233,7 +1229,7 @@ main() {
expect(driver.hasFilesToAnalyze, isTrue);
// Wait for idle, nothing to do.
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(driver.hasFilesToAnalyze, isFalse);
// Ask to analyze the file, so there is a file to analyze.
@@ -1247,7 +1243,7 @@ main() {
// Change a file, even if not added, it still might affect analysis.
driver.changeFile(_p('/not/added.dart'));
expect(driver.hasFilesToAnalyze, isTrue);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(driver.hasFilesToAnalyze, isFalse);
// Request of referenced names is not analysis of a file.
@@ -1334,7 +1330,7 @@ import 'b.dart';
driver.addFile(a);
driver.addFile(c);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(driver.knownFiles, contains(a));
expect(driver.knownFiles, contains(b));
@@ -1343,7 +1339,7 @@ import 'b.dart';
// Remove a.dart and analyze.
// Both a.dart and b.dart are not known now.
driver.removeFile(a);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(driver.knownFiles, isNot(contains(a)));
expect(driver.knownFiles, isNot(contains(b)));
expect(driver.knownFiles, contains(c));
@@ -1595,7 +1591,7 @@ var b = new B();
driver.addFile(c);
{
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
// c.dart was added after a.dart, so it is analyzed after a.dart,
// so we know that a.dart is the library of c.dart, so no errors.
@@ -1608,7 +1604,7 @@ var b = new B();
{
provider.updateFile(a, '// does not use c.dart anymore');
driver.changeFile(a);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
// Now c.dart does not have a library context, so A and B cannot be
// resolved, so there are errors.
@@ -1646,7 +1642,7 @@ var b = new B();
driver.addFile(a);
driver.addFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
// c.dart was added before a.dart, so we attempt to analyze it before
// a.dart, but we cannot find the library for it, so we delay analysis
@@ -1670,7 +1666,7 @@ var b = new B();
driver.addFile(c);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
// There is no library which c.dart is a part of, so it has unresolved
// A and B references.
@@ -1708,7 +1704,7 @@ var b = new B();
driver.addFile(a);
driver.addFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
// c.dart was added before a.dart, so we attempt to analyze it before
// a.dart, but we cannot find the library for it, so we delay analysis
@@ -1735,7 +1731,7 @@ var A = B;
driver.addFile(b);
// We have results for both "a" and "b".
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(2));
{
AnalysisResult ar = allResults.firstWhere((r) => r.path == a);
@@ -1755,7 +1751,7 @@ var A = B;
// While "b" is not analyzed explicitly, it is analyzed implicitly.
// We don't get a result for "b".
// But the change causes "a" to be reanalyzed.
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
{
AnalysisResult ar = allResults.firstWhere((r) => r.path == a);
@@ -1767,7 +1763,7 @@ var A = B;
addTestFile('main() {}');
// We have a result.
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
expect(allResults[0].path, testFile);
allResults.clear();
@@ -1778,7 +1774,7 @@ var A = B;
driver.removeFile(testFile);
driver.changeFile(testFile);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, isEmpty);
}
@@ -1791,7 +1787,7 @@ var A = B;
driver.addFile(a);
driver.addFile(b);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
// b.dart s clean.
expect(allResults.singleWhere((r) => r.path == b).errors, isEmpty);
@@ -1800,7 +1796,7 @@ var A = B;
// Remove a.dart, now b.dart should be reanalyzed and has an error.
provider.deleteFile(a);
driver.removeFile(a);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults.singleWhere((r) => r.path == b).errors, hasLength(2));
allResults.clear();
}
@@ -1809,7 +1805,7 @@ var A = B;
String content = 'int f() => 42;';
addTestFile(content, priority: true);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
AnalysisResult result = allResults.single;
@@ -1837,7 +1833,7 @@ var A = B;
driver.addFile(b);
driver.addFile(c);
driver.priorityFiles = [b];
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(3));
AnalysisResult result = allResults[0];
@@ -1849,7 +1845,7 @@ var A = B;
test_results_regular() async {
String content = 'int f() => 42;';
addTestFile(content);
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
AnalysisResult result = allResults.single;
@@ -1863,7 +1859,7 @@ var A = B;
test_results_status() async {
addTestFile('int f() => 42;');
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allStatuses, hasLength(2));
expect(allStatuses[0].isAnalyzing, isTrue);
@@ -1873,16 +1869,16 @@ var A = B;
}
test_waitForIdle() async {
- // With no analysis to do, driver.waitForIdle should complete immediately.
- await driver.waitForIdle();
+ // With no analysis to do, scheduler.waitForIdle should complete immediately.
+ await scheduler.waitForIdle();
// Now schedule some analysis.
addTestFile('int f() => 42;');
expect(allResults, isEmpty);
- // driver.waitForIdle should wait for the analysis.
- await driver.waitForIdle();
+ // scheduler.waitForIdle should wait for the analysis.
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
// Make sure there is no more analysis pending.
- await driver.waitForIdle();
+ await scheduler.waitForIdle();
expect(allResults, hasLength(1));
}

Powered by Google App Engine
This is Rietveld 408576698