Add some tests of the listTokenDetails request
Change-Id: I5dc2ae390777454128f18bef95bb00dcbce18f66
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100600
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/test/edit/test_all.dart b/pkg/analysis_server/test/edit/test_all.dart
index 70251a6..62595d3 100644
--- a/pkg/analysis_server/test/edit/test_all.dart
+++ b/pkg/analysis_server/test/edit/test_all.dart
@@ -12,6 +12,7 @@
import 'refactoring_test.dart' as refactoring;
import 'sort_members_test.dart' as sort_members;
import 'statement_completion_test.dart' as statement_completion;
+import 'token_details_test.dart' as token_details;
main() {
defineReflectiveSuite(() {
@@ -23,5 +24,6 @@
refactoring.main();
sort_members.main();
statement_completion.main();
+ token_details.main();
}, name: 'edit');
}
diff --git a/pkg/analysis_server/test/edit/token_details_test.dart b/pkg/analysis_server/test/edit/token_details_test.dart
new file mode 100644
index 0000000..5d1be56
--- /dev/null
+++ b/pkg/analysis_server/test/edit/token_details_test.dart
@@ -0,0 +1,54 @@
+// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
+// 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 'package:analysis_server/protocol/protocol.dart';
+import 'package:analysis_server/protocol/protocol_generated.dart';
+import 'package:analysis_server/src/domain_completion.dart';
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../analysis_abstract.dart';
+
+main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(CompletionListTokenDetailsTest);
+ });
+}
+
+@reflectiveTest
+class CompletionListTokenDetailsTest extends AbstractAnalysisTest {
+ CompletionDomainHandler completionHandler;
+
+ Future<CompletionListTokenDetailsResult> getTokenDetails() async {
+ CompletionListTokenDetailsParams params =
+ new CompletionListTokenDetailsParams(testFile);
+ await completionHandler.listTokenDetails(params.toRequest('0'));
+ Response response = await serverChannel.responseController.stream.first;
+ return CompletionListTokenDetailsResult.fromResponse(response);
+ }
+
+ @override
+ void setUp() {
+ super.setUp();
+ completionHandler = new CompletionDomainHandler(server);
+ }
+
+ test_packageUri() async {
+ newFile('/project/.packages', content: ''''
+project:lib/
+''');
+ newFile('/project/lib/c.dart', content: ''''
+class C {}
+''');
+ addTestFile('''
+import 'package:project/c.dart';
+
+C c;
+''');
+ createProject();
+ CompletionListTokenDetailsResult result = await getTokenDetails();
+ List<TokenDetails> tokens = result.tokens;
+ expect(tokens, hasLength(6));
+ }
+}
diff --git a/pkg/analysis_server/test/integration/completion/list_token_details_test.dart b/pkg/analysis_server/test/integration/completion/list_token_details_test.dart
new file mode 100644
index 0000000..04df740
--- /dev/null
+++ b/pkg/analysis_server/test/integration/completion/list_token_details_test.dart
@@ -0,0 +1,60 @@
+// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
+// 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 'package:analysis_server/protocol/protocol_generated.dart';
+import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../support/integration_tests.dart';
+
+main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(ListTokenDetailsTest);
+ });
+}
+
+@reflectiveTest
+class ListTokenDetailsTest extends AbstractAnalysisServerIntegrationTest {
+ String testPackagePath;
+
+ Future setUp() async {
+ await super.setUp();
+ testPackagePath = path.join(sourceDirectory.path, 'test_package');
+ }
+
+ @override
+ Future standardAnalysisSetup({bool subscribeStatus: true}) {
+ List<Future> futures = <Future>[];
+ if (subscribeStatus) {
+ futures.add(sendServerSetSubscriptions([ServerService.STATUS]));
+ }
+ futures.add(sendAnalysisSetAnalysisRoots([testPackagePath], []));
+ return Future.wait(futures);
+ }
+
+ test_getSuggestions() async {
+ String aPath = path.join(sourceDirectory.path, 'a');
+ String aLibPath = path.join(aPath, 'lib');
+ writeFile(path.join(aLibPath, 'a.dart'), '''
+class A {}
+''');
+ writeFile(path.join(testPackagePath, '.packages'), '''
+a:file://$aLibPath
+test_package:lib/
+''');
+ String testFilePath = path.join(testPackagePath, 'lib', 'test.dart');
+ writeFile(testFilePath, '''
+import 'package:a/a.dart';
+class B {}
+String f(A a, B b) => a.toString() + b.toString();
+''');
+ await standardAnalysisSetup();
+ await analysisFinished;
+
+ CompletionListTokenDetailsResult result =
+ await sendCompletionListTokenDetails(testFilePath);
+ expect(result, isNotNull);
+ }
+}
diff --git a/pkg/analysis_server/test/integration/completion/test_all.dart b/pkg/analysis_server/test/integration/completion/test_all.dart
index 1b5962b..11ed77f 100644
--- a/pkg/analysis_server/test/integration/completion/test_all.dart
+++ b/pkg/analysis_server/test/integration/completion/test_all.dart
@@ -4,13 +4,12 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
-import 'get_suggestions_test.dart' as get_suggestions_test;
+import 'get_suggestions_test.dart' as get_suggestions;
+import 'list_token_details_test.dart' as list_token_details;
-/**
- * Utility for manually running all integration tests.
- */
main() {
defineReflectiveSuite(() {
- get_suggestions_test.main();
+ get_suggestions.main();
+ list_token_details.main();
}, name: 'completion');
}
diff --git a/pkg/analysis_server/test/integration/coverage.md b/pkg/analysis_server/test/integration/coverage.md
index 1728314..6331b59 100644
--- a/pkg/analysis_server/test/integration/coverage.md
+++ b/pkg/analysis_server/test/integration/coverage.md
@@ -33,7 +33,7 @@
- [ ] completion.availableSuggestions
- [ ] completion.getSuggestionDetails
- [x] completion.getSuggestions
-- [ ] completion.listTokenDetails
+- [x] completion.listTokenDetails
- [ ] completion.registerLibraryPaths
- [ ] completion.results
- [ ] completion.setSubscriptions