diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java index 29c4c21b6eba..69ba4fa83f36 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java @@ -771,9 +771,13 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture { * * @param charToTypeAfterCompletion after completion, this char will be typed if not {@code null}. * It could be used to complete the suggestion with {@code '\t'} for example. + * @param typeCharIfOnlyOneCompletion if charToTypeAfterCompletion should be placed if code is completed by {@link #completeBasic()} * @return list of all completion elements just like in {@link #completeBasic()} * @see #completeBasic() */ + @NotNull + List completeBasicAllCarets(@Nullable Character charToTypeAfterCompletion, boolean typeCharIfOnlyOneCompletion); + @NotNull List completeBasicAllCarets(@Nullable Character charToTypeAfterCompletion); diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/EditorTestFixture.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/EditorTestFixture.java index 5f227790857e..2f9becd6ad16 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/EditorTestFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/EditorTestFixture.java @@ -228,7 +228,7 @@ public class EditorTestFixture { } @NotNull - public final List completeBasicAllCarets(@Nullable final Character charToTypeAfterCompletion) { + public final List completeBasicAllCarets(@Nullable final Character charToTypeAfterCompletion, boolean typeCharIfOnlyOneCompletion) { final CaretModel caretModel = myEditor.getCaretModel(); final List carets = caretModel.getAllCarets(); @@ -247,7 +247,10 @@ public class EditorTestFixture { caretModel.moveToOffset(originalOffset); final LookupElement[] lookupElements = completeBasic(); if (charToTypeAfterCompletion != null) { - type(charToTypeAfterCompletion); + var alwaysCompleteWithChar = !typeCharIfOnlyOneCompletion; + if (alwaysCompleteWithChar || lookupElements != null && lookupElements.length > 0) { + type(charToTypeAfterCompletion); + } } if (lookupElements != null) { result.addAll(Arrays.asList(lookupElements)); diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 04c237f98612..f183807cd63e 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -1289,10 +1289,16 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig return myEditorTestFixture.completeBasic(); } + @Override + @NotNull + public final List completeBasicAllCarets(@Nullable Character charToTypeAfterCompletion, boolean typeCharIfOnlyOneCompletion) { + return myEditorTestFixture.completeBasicAllCarets(charToTypeAfterCompletion, typeCharIfOnlyOneCompletion); + } + @Override @NotNull public final List completeBasicAllCarets(@Nullable Character charToTypeAfterCompletion) { - return myEditorTestFixture.completeBasicAllCarets(charToTypeAfterCompletion); + return completeBasicAllCarets(charToTypeAfterCompletion, true); } @Override