Another fix for a race in a test.
Change-Id: I548dff1e4abb45b7d8516923db92dc9d315d72d2
Reviewed-on: https://dart-review.googlesource.com/64220
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
diff --git a/pkg/analysis_server/test/integration/analysis/package_root_test.dart b/pkg/analysis_server/test/integration/analysis/package_root_test.dart
index 93abb69..f764bfc 100644
--- a/pkg/analysis_server/test/integration/analysis/package_root_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/package_root_test.dart
@@ -2,6 +2,8 @@
// 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:analysis_server/protocol/protocol_generated.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:path/path.dart' as path;
@@ -41,6 +43,8 @@
writeFile(mainPath, mainText);
String normalizedFooBarPath = writeFile(fooBarPath, fooBarText);
sendServerSetSubscriptions([ServerService.STATUS]);
+ Future<AnalysisNavigationParams> navigationParamsFuture =
+ onAnalysisNavigation.first;
sendAnalysisSetSubscriptions({
AnalysisService.NAVIGATION: [mainPath]
});
@@ -48,39 +52,38 @@
List<NavigationTarget> navigationTargets;
List<String> navigationTargetFiles;
- onAnalysisNavigation.listen((AnalysisNavigationParams params) {
- expect(params.file, equals(mainPath));
- navigationRegions = params.regions;
- navigationTargets = params.targets;
- navigationTargetFiles = params.files;
- });
-
sendAnalysisSetAnalysisRoots([projPath], [],
packageRoots: {projPath: packagesPath});
sendAnalysisSetPriorityFiles([mainPath]);
- await onAnalysisNavigation.first;
+ AnalysisNavigationParams params = await navigationParamsFuture;
- return analysisFinished.then((_) {
- // Verify that fooBarPath was properly resolved by checking that f()
- // refers to it.
- bool found = false;
- for (NavigationRegion region in navigationRegions) {
- String navigationSource =
- mainText.substring(region.offset, region.offset + region.length);
- if (navigationSource == 'f') {
- found = true;
- expect(region.targets, hasLength(1));
- int navigationTargetIndex = region.targets[0];
- NavigationTarget navigationTarget =
- navigationTargets[navigationTargetIndex];
- String navigationFile =
- navigationTargetFiles[navigationTarget.fileIndex];
- expect(navigationFile, equals(normalizedFooBarPath));
- }
+ expect(params.file, equals(mainPath));
+ navigationRegions = params.regions;
+ navigationTargets = params.targets;
+ navigationTargetFiles = params.files;
+
+ await analysisFinished;
+
+ // Verify that fooBarPath was properly resolved by checking that f()
+ // refers to it.
+ bool found = false;
+ for (NavigationRegion region in navigationRegions) {
+ String navigationSource =
+ mainText.substring(region.offset, region.offset + region.length);
+ if (navigationSource == 'f') {
+ found = true;
+ expect(region.targets, hasLength(1));
+ int navigationTargetIndex = region.targets[0];
+ NavigationTarget navigationTarget =
+ navigationTargets[navigationTargetIndex];
+ String navigationFile =
+ navigationTargetFiles[navigationTarget.fileIndex];
+ expect(navigationFile, equals(normalizedFooBarPath));
}
- expect(found, isTrue);
- });
+ }
+
+ expect(found, isTrue);
}
}