Skip to content

Commit 047f172

Browse files
jwrencommit-bot@chromium.org
authored andcommitted
Remove the DartCompletionManagerTest and replace it with CompletionRelevanceTest, making all of the completion relevance tests consistent.
Change-Id: I24d042b420a3c1d6f38b063913cb702c34858076 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151343 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Jaime Wren <[email protected]>
1 parent b65c90a commit 047f172

File tree

5 files changed

+35
-101
lines changed

5 files changed

+35
-101
lines changed

pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -68,35 +68,6 @@ abstract class DartCompletionContributorTest
6868
}
6969
}
7070

71-
/// Base class for tests that validate [DartCompletionManager] suggestions.
72-
class DartCompletionManagerTest extends _BaseDartCompletionContributorTest {
73-
DartCompletionManager completionManager;
74-
75-
@nonVirtual
76-
@override
77-
Future<List<CompletionSuggestion>> computeContributedSuggestions(
78-
DartCompletionRequest request) async {
79-
final baseRequest = CompletionRequestImpl(request.result, completionOffset,
80-
useNewRelevance, CompletionPerformance());
81-
return completionManager.computeSuggestions(baseRequest);
82-
}
83-
84-
/// Display sorted suggestions.
85-
void printSuggestions() {
86-
suggestions.sort(completionComparator);
87-
for (var s in suggestions) {
88-
print(
89-
'[${s.relevance}] ${s.completion} • ${s.element?.kind?.name ?? ""} ${s.kind.name} ${s.element?.location?.file ?? ""}');
90-
}
91-
}
92-
93-
@override
94-
void setUp() {
95-
super.setUp();
96-
completionManager = DartCompletionManager();
97-
}
98-
}
99-
10071
abstract class _BaseDartCompletionContributorTest extends AbstractContextTest {
10172
static const String _UNCHECKED = '__UNCHECKED__';
10273
String testFile;

pkg/analysis_server/test/services/completion/dart/relevance/bool_assignment_relevance_test.dart

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:analyzer_plugin/protocol/protocol_common.dart';
66
import 'package:test/test.dart';
77
import 'package:test_reflective_loader/test_reflective_loader.dart';
88

9-
import '../completion_contributor_util.dart';
9+
import 'completion_relevance.dart';
1010

1111
void main() {
1212
defineReflectiveSuite(() {
@@ -15,16 +15,14 @@ void main() {
1515
}
1616

1717
@reflectiveTest
18-
class BoolAssignmentRelevanceTest extends DartCompletionManagerTest {
19-
@failingTest
18+
class BoolAssignmentRelevanceTest extends CompletionRelevanceTest {
2019
Future<void> test_boolLiterals_imported() async {
21-
addTestSource('''
20+
await addTestFile('''
2221
foo() {
2322
bool b;
2423
b = ^
2524
}
2625
''');
27-
await computeSuggestions();
2826

2927
var trueSuggestion = suggestionWith(
3028
completion: 'true', kind: CompletionSuggestionKind.KEYWORD);
@@ -43,17 +41,13 @@ foo() {
4341
falseSuggestion.relevance, greaterThan(boolFromEnvironment.relevance));
4442
}
4543

46-
/// These are 2 failing tests for http://dartbug.com/37907:
47-
/// "Suggest `false` above other results when autocompleting a bool setter"
48-
@failingTest
4944
Future<void> test_boolLiterals_local() async {
50-
addTestSource('''
45+
await addTestFile('''
5146
foo() {
5247
bool b;
5348
b = ^
5449
}
5550
''');
56-
await computeSuggestions();
5751

5852
var trueSuggestion = suggestionWith(
5953
completion: 'true', kind: CompletionSuggestionKind.KEYWORD);

pkg/analysis_server/test/services/completion/dart/relevance/completion_relevance.dart

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,28 @@ class CompletionRelevanceTest extends AbstractCompletionDriverTest {
2525
var length = suggestions.length;
2626
expect(length, greaterThan(1),
2727
reason: 'Test must specify more than one suggestion');
28+
var inOrder = true;
2829
var previous = suggestions[0];
2930
for (var i = 1; i < length; i++) {
3031
var current = suggestions[i];
3132
if (current.relevance >= previous.relevance) {
32-
suggestions.sort(
33-
(first, second) => second.relevance.compareTo(first.relevance));
34-
var buffer = StringBuffer();
35-
buffer.write('Suggestions are not in the expected order. ');
36-
buffer.writeln('To accept the current state, use');
37-
buffer.writeln();
38-
for (var suggestion in suggestions) {
39-
var completion = suggestion.completion;
40-
buffer.writeln(" suggestionWith(completion: '$completion'),");
41-
}
42-
fail(buffer.toString());
33+
inOrder = false;
4334
}
4435
previous = current;
4536
}
37+
if (!inOrder) {
38+
suggestions.sort((first, second) => second.relevance - first.relevance);
39+
var buffer = StringBuffer();
40+
buffer.writeln('Actual sort order does not match expected order.');
41+
buffer.writeln('To accept the actual sort order, use:');
42+
buffer.writeln();
43+
buffer.writeln(' assertOrder([');
44+
for (var suggestion in suggestions) {
45+
var completion = suggestion.completion;
46+
buffer.writeln(" suggestionWith(completion: '$completion'),");
47+
}
48+
buffer.writeln(' ]);');
49+
fail(buffer.toString());
50+
}
4651
}
4752
}

pkg/analysis_server/test/services/completion/dart/relevance/deprecated_member_relevance_test.dart

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analyzer_plugin/protocol/protocol_common.dart';
6-
import 'package:test/test.dart';
76
import 'package:test_reflective_loader/test_reflective_loader.dart';
87

9-
import '../completion_contributor_util.dart';
8+
import 'completion_relevance.dart';
109

1110
void main() {
1211
defineReflectiveSuite(() {
@@ -15,9 +14,9 @@ void main() {
1514
}
1615

1716
@reflectiveTest
18-
class DeprecatedMemberRelevanceTest extends DartCompletionManagerTest {
17+
class DeprecatedMemberRelevanceTest extends CompletionRelevanceTest {
1918
Future<void> test_deprecated() async {
20-
addTestSource('''
19+
await addTestFile('''
2120
class A {
2221
void a1() { }
2322
@deprecated
@@ -29,18 +28,16 @@ void main() {
2928
a.^
3029
}
3130
''');
32-
await computeSuggestions();
3331

34-
expect(
35-
suggestionWith(
36-
completion: 'a2',
37-
element: ElementKind.METHOD,
38-
kind: CompletionSuggestionKind.INVOCATION)
39-
.relevance,
40-
lessThan(suggestionWith(
41-
completion: 'a1',
42-
element: ElementKind.METHOD,
43-
kind: CompletionSuggestionKind.INVOCATION)
44-
.relevance));
32+
assertOrder([
33+
suggestionWith(
34+
completion: 'a1',
35+
element: ElementKind.METHOD,
36+
kind: CompletionSuggestionKind.INVOCATION),
37+
suggestionWith(
38+
completion: 'a2',
39+
element: ElementKind.METHOD,
40+
kind: CompletionSuggestionKind.INVOCATION),
41+
]);
4542
}
4643
}

pkg/analysis_server/test/services/completion/dart/relevance/instance_member_relevance_test.dart

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analysis_server/src/analysis_server.dart';
6-
import 'package:analyzer_plugin/protocol/protocol_common.dart';
7-
import 'package:test/test.dart';
86
import 'package:test_reflective_loader/test_reflective_loader.dart';
97

10-
import '../../../../client/completion_driver_test.dart';
8+
import 'completion_relevance.dart';
119

1210
void main() {
1311
defineReflectiveSuite(() {
@@ -16,45 +14,14 @@ void main() {
1614
}
1715

1816
@reflectiveTest
19-
class InstanceMemberRelevanceTest extends AbstractCompletionDriverTest {
17+
class InstanceMemberRelevanceTest extends CompletionRelevanceTest {
2018
@override
2119
AnalysisServerOptions get serverOptions =>
2220
AnalysisServerOptions()..useNewRelevance = true;
2321

2422
@override
2523
bool get supportsAvailableSuggestions => true;
2624

27-
/// Assert that all of the given completions were produced and that the
28-
/// suggestions are ordered in decreasing order based on relevance scores.
29-
void assertOrder(List<CompletionSuggestion> suggestions) {
30-
var length = suggestions.length;
31-
expect(length, greaterThan(1),
32-
reason: 'Test must specify more than one suggestion');
33-
var inOrder = true;
34-
var previous = suggestions[0];
35-
for (var i = 1; i < length; i++) {
36-
var current = suggestions[i];
37-
if (current.relevance >= previous.relevance) {
38-
inOrder = false;
39-
}
40-
previous = current;
41-
}
42-
if (!inOrder) {
43-
suggestions.sort((first, second) => second.relevance - first.relevance);
44-
var buffer = StringBuffer();
45-
buffer.writeln('Actual sort order does not match expected order.');
46-
buffer.writeln('To accept the actual sort order, use:');
47-
buffer.writeln();
48-
buffer.writeln(' assertOrder([');
49-
for (var suggestion in suggestions) {
50-
var completion = suggestion.completion;
51-
buffer.writeln(" suggestionWith(completion: '$completion'),");
52-
}
53-
buffer.writeln(' ]);');
54-
fail(buffer.toString());
55-
}
56-
}
57-
5825
Future<void> test_contextType() async {
5926
await addTestFile(r'''
6027
class A {}

0 commit comments

Comments
 (0)