Index: pkg/analysis_server/test/services/completion/completion_test_util.dart |
diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart |
index c4aa2bc823cb2f2c4f20e3812ddddedc13b0976a..63f1d35b42ced020b3c904be424370bbbf61d9c1 100644 |
--- a/pkg/analysis_server/test/services/completion/completion_test_util.dart |
+++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart |
@@ -53,8 +53,12 @@ class AbstractCompletionTest extends AbstractContextTest { |
} |
void assertNotSuggested(String completion) { |
- if (request.suggestions.any((cs) => cs.completion == completion)) { |
- _failWithNodeInfo('did not expect completion: $completion'); |
+ CompletionSuggestion suggestion = request.suggestions.firstWhere( |
+ (cs) => cs.completion == completion, |
+ orElse: () => null); |
+ if (suggestion != null) { |
+ _failedCompletion( |
+ 'did not expect completion: $completion\n $suggestion'); |
} |
} |
@@ -67,17 +71,14 @@ class AbstractCompletionTest extends AbstractContextTest { |
if (cs == null) { |
cs = s; |
} else { |
- List<CompletionSuggestion> completions = |
- request.suggestions.where((s) => s.completion == completion).toList(); |
- _failWithNodeInfo( |
- 'expected exactly one $completion but found > 1\n$completions'); |
+ _failedCompletion( |
+ 'expected exactly one $completion', |
+ request.suggestions.where((s) => s.completion == completion)); |
} |
} |
}); |
if (cs == null) { |
- List<CompletionSuggestion> completions = |
- request.suggestions.map((s) => s.completion).toList(); |
- _failWithNodeInfo('expected "$completion" but found\n $completions'); |
+ _failedCompletion('expected $completion', request.suggestions); |
} |
expect(cs.kind, equals(kind)); |
expect(cs.relevance, equals(relevance)); |
@@ -290,8 +291,21 @@ class AbstractCompletionTest extends AbstractContextTest { |
searchEngine = new SearchEngineImpl(index); |
} |
- void _failWithNodeInfo(String message) { |
+ void _failedCompletion(String message, |
+ [Iterable<CompletionSuggestion> completions]) { |
StringBuffer sb = new StringBuffer(message); |
+ if (completions != null) { |
+ sb.write('\n found'); |
+ completions.toList() |
+ ..sort((CompletionSuggestion s1, CompletionSuggestion s2) { |
+ String c1 = s1.completion.toLowerCase(); |
+ String c2 = s2.completion.toLowerCase(); |
+ return c1.compareTo(c2); |
+ }) |
+ ..forEach((CompletionSuggestion suggestion) { |
+ sb.write('\n ${suggestion.completion} -> $suggestion'); |
+ }); |
+ } |
if (completionNode != null) { |
sb.write('\n in'); |
AstNode node = completionNode; |