From 3866565e51b4f9e60a9fc8ceac494a22d16b21aa Mon Sep 17 00:00:00 2001 From: Alex Plate Date: Fri, 21 Feb 2025 13:03:23 +0200 Subject: [PATCH] Remove IdeaVimTestCase and replace it with VimTestCase --- .../EffectiveOptionChangeListenerTest.kt | 4 +- .../ideavim/option/OptionDeclaredScopeTest.kt | 4 +- .../overrides/TextWidthOptionMapperTest.kt | 4 +- .../jetbrains/plugins/ideavim/VimTestCase.kt | 67 +++++++++---------- .../plugins/ideavim/VimJavaTestCase.kt | 2 +- .../propertybased/IncrementDecrementCheck.kt | 3 +- .../RandomActionsPropertyTest.kt | 4 +- .../propertybased/YankDeletePropertyTest.kt | 4 +- 8 files changed, 45 insertions(+), 47 deletions(-) diff --git a/src/test/java/org/jetbrains/plugins/ideavim/option/EffectiveOptionChangeListenerTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/option/EffectiveOptionChangeListenerTest.kt index ac32ea7f9c..6dcd8ee678 100644 --- a/src/test/java/org/jetbrains/plugins/ideavim/option/EffectiveOptionChangeListenerTest.kt +++ b/src/test/java/org/jetbrains/plugins/ideavim/option/EffectiveOptionChangeListenerTest.kt @@ -33,7 +33,7 @@ import com.maddyhome.idea.vim.vimscript.model.datatypes.VimInt import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString import org.jetbrains.plugins.ideavim.SkipNeovimReason import org.jetbrains.plugins.ideavim.TestWithoutNeovim -import org.jetbrains.plugins.ideavim.IdeaVimTestCase +import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.waitUntil import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach @@ -46,7 +46,7 @@ private const val defaultValue = "defaultValue" private const val defaultNumberValue = 10 @TestWithoutNeovim(reason = SkipNeovimReason.OPTION) -class EffectiveOptionChangeListenerTest : IdeaVimTestCase() { +class EffectiveOptionChangeListenerTest : VimTestCase() { private val optionName = "test" private lateinit var manager: FileEditorManagerImpl private lateinit var otherBufferWindow: Editor diff --git a/src/test/java/org/jetbrains/plugins/ideavim/option/OptionDeclaredScopeTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/option/OptionDeclaredScopeTest.kt index d0742f356a..93219e0d44 100644 --- a/src/test/java/org/jetbrains/plugins/ideavim/option/OptionDeclaredScopeTest.kt +++ b/src/test/java/org/jetbrains/plugins/ideavim/option/OptionDeclaredScopeTest.kt @@ -30,7 +30,7 @@ import com.maddyhome.idea.vim.options.StringOption import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString import org.jetbrains.plugins.ideavim.SkipNeovimReason import org.jetbrains.plugins.ideavim.TestWithoutNeovim -import org.jetbrains.plugins.ideavim.IdeaVimTestCase +import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.waitUntil import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach @@ -43,7 +43,7 @@ import kotlin.test.assertEquals // Tests the implementation of global, local to buffer, local to window and global-local @TestWithoutNeovim(reason = SkipNeovimReason.OPTION) -class OptionDeclaredScopeTest : IdeaVimTestCase() { +class OptionDeclaredScopeTest : VimTestCase() { private val optionName = "test" private val defaultValue = VimString("defaultValue") private val setValue = VimString("setValue") diff --git a/src/test/java/org/jetbrains/plugins/ideavim/option/overrides/TextWidthOptionMapperTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/option/overrides/TextWidthOptionMapperTest.kt index 3b8fef12a0..f67cf422bb 100644 --- a/src/test/java/org/jetbrains/plugins/ideavim/option/overrides/TextWidthOptionMapperTest.kt +++ b/src/test/java/org/jetbrains/plugins/ideavim/option/overrides/TextWidthOptionMapperTest.kt @@ -27,7 +27,7 @@ import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory import com.intellij.testFramework.replaceService import org.jetbrains.plugins.ideavim.SkipNeovimReason import org.jetbrains.plugins.ideavim.TestWithoutNeovim -import org.jetbrains.plugins.ideavim.IdeaVimTestCase +import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.waitUntil import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Assertions.assertTrue @@ -38,7 +38,7 @@ import javax.swing.SwingConstants import kotlin.test.assertEquals @TestWithoutNeovim(reason = SkipNeovimReason.NOT_VIM_TESTING) -class TextWidthOptionMapperTest : IdeaVimTestCase() { +class TextWidthOptionMapperTest : VimTestCase() { // IntelliJ can have a margin set, but not act on it. We want to maintain this, not least because the right margin // visual guide is shown by default diff --git a/src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt b/src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt index 69fbccbd68..1e157ba5a6 100644 --- a/src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt +++ b/src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt @@ -111,42 +111,11 @@ import kotlin.test.assertTrue * To plugin writers: this class is internal, thus not allowed to be used by third-party plugins. * This is done as we have no mechanism to guarantee compatibility as we update this test case. * Feel free to copy this class into your plugin, or copy just needed functions. + * + * The tests are started on non-EDT thread without any locks. */ @ApiStatus.Internal -abstract class VimTestCase : IdeaVimTestCase() { - object Checks { - var caretShape: Boolean = true - - val neoVim = NeoVim() - - var keyHandler = KeyHandlerMethod.VIA_IDE - - fun reset() { - caretShape = true - - neoVim.reset() - keyHandler = KeyHandlerMethod.VIA_IDE - } - - class NeoVim { - var ignoredRegisters: Set = setOf() - var exitOnTearDown = true - - fun reset() { - ignoredRegisters = setOf() - exitOnTearDown = true - } - } - - enum class KeyHandlerMethod { - VIA_IDE, - DIRECT_TO_VIM, - } - } -} - -@ApiStatus.Internal -abstract class IdeaVimTestCase { +abstract class VimTestCase { protected lateinit var fixture: CodeInsightTestFixture lateinit var testInfo: TestInfo @@ -1055,6 +1024,36 @@ abstract class IdeaVimTestCase { class EditorAction(val name: String) : CharType } + object Checks { + var caretShape: Boolean = true + + val neoVim = NeoVim() + + var keyHandler = KeyHandlerMethod.VIA_IDE + + fun reset() { + caretShape = true + + neoVim.reset() + keyHandler = KeyHandlerMethod.VIA_IDE + } + + class NeoVim { + var ignoredRegisters: Set = setOf() + var exitOnTearDown = true + + fun reset() { + ignoredRegisters = setOf() + exitOnTearDown = true + } + } + + enum class KeyHandlerMethod { + VIA_IDE, + DIRECT_TO_VIM, + } + } + companion object { const val c = EditorTestUtil.CARET_TAG const val s = EditorTestUtil.SELECTION_START_TAG diff --git a/tests/java-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/VimJavaTestCase.kt b/tests/java-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/VimJavaTestCase.kt index 932aefd9af..b1e0ab0a8b 100644 --- a/tests/java-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/VimJavaTestCase.kt +++ b/tests/java-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/VimJavaTestCase.kt @@ -10,6 +10,6 @@ package org.jetbrains.plugins.ideavim import com.intellij.ide.highlighter.JavaFileType -abstract class VimJavaTestCase : IdeaVimTestCase() { +abstract class VimJavaTestCase : VimTestCase() { protected fun configureByJavaText(content: String) = configureByText(JavaFileType.INSTANCE, content) } \ No newline at end of file diff --git a/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/IncrementDecrementCheck.kt b/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/IncrementDecrementCheck.kt index f2c6982024..1f0c8903a2 100644 --- a/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/IncrementDecrementCheck.kt +++ b/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/IncrementDecrementCheck.kt @@ -18,7 +18,6 @@ import org.jetbrains.jetCheck.PropertyChecker import org.jetbrains.plugins.ideavim.NeovimTesting import org.jetbrains.plugins.ideavim.SkipNeovimReason import org.jetbrains.plugins.ideavim.TestWithoutNeovim -import org.jetbrains.plugins.ideavim.IdeaVimTestCase import org.jetbrains.plugins.ideavim.VimTestCase import org.junit.jupiter.api.Test import kotlin.math.absoluteValue @@ -76,7 +75,7 @@ private class IncrementDecrementActions(private val editor: Editor, val test: Vi val key = env.generateValue(generator, null) val action = injector.parser.parseKeys(key).single() env.logMessage("Use command: ${injector.parser.toKeyNotation(action)}.") - IdeaVimTestCase.typeText(listOf(action), editor, editor.project) + VimTestCase.typeText(listOf(action), editor, editor.project) NeovimTesting.typeCommand(key, test.testInfo, editor) IdeEventQueue.getInstance().flushQueue() diff --git a/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/RandomActionsPropertyTest.kt b/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/RandomActionsPropertyTest.kt index 42aa1f99f5..718a266921 100644 --- a/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/RandomActionsPropertyTest.kt +++ b/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/RandomActionsPropertyTest.kt @@ -18,7 +18,7 @@ import com.maddyhome.idea.vim.newapi.vim import org.jetbrains.jetCheck.Generator import org.jetbrains.jetCheck.ImperativeCommand import org.jetbrains.jetCheck.PropertyChecker -import org.jetbrains.plugins.ideavim.IdeaVimTestCase +import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.propertybased.samples.javaText import org.jetbrains.plugins.ideavim.propertybased.samples.loremText import org.junit.jupiter.api.Test @@ -108,7 +108,7 @@ private class AvailableActions(private val editor: Editor) : ImperativeCommand { val usedKey = env.generateValue(keyGenerator, null) val node = trie.getTrieNode(currentKeys + usedKey) env.logMessage("Use command: ${injector.parser.toKeyNotation(currentKeys + usedKey)}. ${if (node?.data != null) "Action: ${node.data!!.actionId}" else ""}") - IdeaVimTestCase.typeText(listOf(usedKey), editor, editor.project) + VimTestCase.typeText(listOf(usedKey), editor, editor.project) IdeEventQueue.getInstance().flushQueue() PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue() diff --git a/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/YankDeletePropertyTest.kt b/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/YankDeletePropertyTest.kt index 913b5a8135..1cb4f79dcd 100644 --- a/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/YankDeletePropertyTest.kt +++ b/tests/property-tests/src/test/kotlin/org/jetbrains/plugins/ideavim/propertybased/YankDeletePropertyTest.kt @@ -15,7 +15,7 @@ import com.maddyhome.idea.vim.api.injector import org.jetbrains.jetCheck.Generator import org.jetbrains.jetCheck.ImperativeCommand import org.jetbrains.jetCheck.PropertyChecker -import org.jetbrains.plugins.ideavim.IdeaVimTestCase +import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.propertybased.samples.loremText import org.junit.jupiter.api.Test @@ -41,7 +41,7 @@ private class YankDeleteActions(private val editor: Editor) : ImperativeCommand val key = env.generateValue(Generator.sampledFrom(keysList), null) env.logMessage("Use command: $key") - IdeaVimTestCase.typeText(injector.parser.parseKeys(key), editor, editor.project) + VimTestCase.typeText(injector.parser.parseKeys(key), editor, editor.project) IdeEventQueue.getInstance().flushQueue() PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue()