diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy index ae4d8d6a2cb2..ce00ff76ee67 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy @@ -1731,23 +1731,17 @@ class Foo {{ } public void "test show popup with single live template if show_live_tempate_in_completion option is enabled"() { - def oldValue = LiveTemplateCompletionContributor.ourShowTemplatesInTests - try { - LiveTemplateCompletionContributor.ourShowTemplatesInTests = false - myFixture.configureByText "a.java", """ + LiveTemplateCompletionContributor.setShowTemplatesInTests(false, getTestRootDisposable()) + myFixture.configureByText "a.java", """ class Foo {{ - ita +ita """ - type 'r' - assert lookup == null - - LiveTemplateCompletionContributor.ourShowTemplatesInTests = true - type '\br' - assert lookup - assert myFixture.lookupElementStrings == ['itar'] - } - finally { - LiveTemplateCompletionContributor.ourShowTemplatesInTests = oldValue - } + type 'r' + assert lookup == null + + LiveTemplateCompletionContributor.setShowTemplatesInTests(true, getTestRootDisposable()) + type '\br' + assert lookup + assert myFixture.lookupElementStrings == ['itar'] } } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/completion/TemplatesCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/completion/TemplatesCompletionTest.java index 1c913ff5dd54..6160c6338e52 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/completion/TemplatesCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/completion/TemplatesCompletionTest.java @@ -31,19 +31,14 @@ import org.jetbrains.annotations.Nullable; import java.util.Set; public class TemplatesCompletionTest extends CompletionAutoPopupTestCase { - private boolean shotTemplatesInTestsOldValue; - @Override public void setUp() { super.setUp(); - shotTemplatesInTestsOldValue = LiveTemplateCompletionContributor.ourShowTemplatesInTests; - LiveTemplateCompletionContributor.ourShowTemplatesInTests = false; + LiveTemplateCompletionContributor.setShowTemplatesInTests(false, getTestRootDisposable()); } @Override public void tearDown() throws Exception { - LiveTemplateCompletionContributor.ourShowTemplatesInTests = shotTemplatesInTestsOldValue; - PostfixTemplatesSettings settings = PostfixTemplatesSettings.getInstance(); assertNotNull(settings); settings.setLangDisabledTemplates(ContainerUtil.>newHashMap()); @@ -53,13 +48,12 @@ public class TemplatesCompletionTest extends CompletionAutoPopupTestCase { } public void testSimpleCompletionList() { - LiveTemplateCompletionContributor.ourShowTemplatesInTests = true; - + LiveTemplateCompletionContributor.setShowTemplatesInTests(true, getTestRootDisposable()); doAutoPopupTest("ins", InstanceofExpressionPostfixTemplate.class); } public void testAutopopupWithEnabledLiveTemplatesInCompletion() { - LiveTemplateCompletionContributor.ourShowTemplatesInTests = true; + LiveTemplateCompletionContributor.setShowTemplatesInTests(false, getTestRootDisposable()); configureByFile(); type("instanceof"); @@ -127,14 +121,14 @@ public class TemplatesCompletionTest extends CompletionAutoPopupTestCase { } public void testDoNotAutoCompleteCompletionElementIfTemplateUnique() { - LiveTemplateCompletionContributor.ourShowTemplatesInTests = true; + LiveTemplateCompletionContributor.setShowTemplatesInTests(true, getTestRootDisposable()); configureByFile(); myFixture.completeBasic(); checkResultByFile(); } public void testDoNotCompleteTemplateInMultiCaretMode() { - LiveTemplateCompletionContributor.ourShowTemplatesInTests = true; + LiveTemplateCompletionContributor.setShowTemplatesInTests(true, getTestRootDisposable()); configureByFile(); assertEmpty(myFixture.complete(CompletionType.BASIC)); checkResultByFile(); @@ -190,7 +184,7 @@ public class TemplatesCompletionTest extends CompletionAutoPopupTestCase { } public void testTabCompletionWithTemplatesInAutopopup() { - LiveTemplateCompletionContributor.ourShowTemplatesInTests = true; + LiveTemplateCompletionContributor.setShowTemplatesInTests(true, getTestRootDisposable()); configureByFile(); type("."); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/LiveTemplateCompletionContributor.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/LiveTemplateCompletionContributor.java index 69b733e5a359..0514a1f8df1a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/LiveTemplateCompletionContributor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/LiveTemplateCompletionContributor.java @@ -20,8 +20,10 @@ import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.template.CustomLiveTemplate; import com.intellij.codeInsight.template.CustomLiveTemplateBase; import com.intellij.codeInsight.template.CustomTemplateCallback; +import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.patterns.PlatformPatterns; @@ -33,6 +35,7 @@ import com.intellij.util.ProcessingContext; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.TestOnly; import java.util.Collection; import java.util.List; @@ -45,7 +48,19 @@ import static com.intellij.codeInsight.template.impl.ListTemplatesHandler.filter * @author peter */ public class LiveTemplateCompletionContributor extends CompletionContributor { - public static boolean ourShowTemplatesInTests = false; + private static boolean ourShowTemplatesInTests = false; + + @TestOnly + public static void setShowTemplatesInTests(boolean show, @NotNull Disposable parentDisposable) { + ourShowTemplatesInTests = show; + Disposer.register(parentDisposable, new Disposable() { + @Override + public void dispose() { + //noinspection AssignmentToStaticFieldFromInstanceMethod + ourShowTemplatesInTests = false; + } + }); + } public static boolean shouldShowAllTemplates() { if (ApplicationManager.getApplication().isUnitTestMode()) {