KT-32366: Refactor tests to allow testing of preview window
- add directive `PREVIEW_ENABLED` into scratch file settings
This commit is contained in:
committed by
Roman Golyshev
parent
dd1ace37d2
commit
358ec2b8bd
@@ -19,6 +19,7 @@ import com.intellij.util.Alarm
|
||||
import org.jetbrains.kotlin.idea.scratch.actions.RunScratchAction
|
||||
import org.jetbrains.kotlin.idea.scratch.actions.RunScratchFromHereAction
|
||||
import org.jetbrains.kotlin.idea.scratch.actions.ScratchCompilationSupport
|
||||
import org.jetbrains.kotlin.idea.scratch.ui.findScratchFileEditorWithPreview
|
||||
|
||||
class ScratchFileAutoRunner(private val project: Project) : DocumentListener {
|
||||
companion object {
|
||||
@@ -72,6 +73,7 @@ class ScratchFileAutoRunner(private val project: Project) : DocumentListener {
|
||||
}
|
||||
|
||||
private fun getScratchFile(file: VirtualFile, project: Project): ScratchFile? {
|
||||
return getScratchFileFromEditorSelectedForFile(FileEditorManager.getInstance(project), file)
|
||||
val editor = FileEditorManager.getInstance(project).getSelectedEditor(file) as? TextEditor
|
||||
return editor?.findScratchFileEditorWithPreview()?.scratchFile
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,9 @@ import com.intellij.openapi.fileEditor.TextEditor
|
||||
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.actions.KOTLIN_WORKSHEET_EXTENSION
|
||||
import org.jetbrains.kotlin.idea.scratch.ui.KtScratchFileEditorWithPreview
|
||||
import org.jetbrains.kotlin.idea.scratch.ui.findScratchFileEditorWithPreview
|
||||
|
||||
internal val LOG = Logger.getInstance("#org.jetbrains.kotlin.idea.scratch")
|
||||
@@ -27,9 +29,10 @@ val VirtualFile.isKotlinWorksheet: Boolean
|
||||
val VirtualFile.isKotlinScratch: Boolean
|
||||
get() = ScratchFileService.getInstance().getRootType(this) is ScratchRootType
|
||||
|
||||
fun getScratchFileFromEditorSelectedForFile(fileManager: FileEditorManager, virtualFile: VirtualFile): ScratchFile? {
|
||||
@TestOnly
|
||||
fun getScratchEditorForSelectedFile(fileManager: FileEditorManager, virtualFile: VirtualFile): KtScratchFileEditorWithPreview? {
|
||||
val editor = fileManager.getSelectedEditor(virtualFile) as? TextEditor ?: return null
|
||||
return editor.getScratchFile()
|
||||
return editor.findScratchFileEditorWithPreview()
|
||||
}
|
||||
|
||||
fun getScratchFileFromSelectedEditor(project: Project): ScratchFile? {
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.pom.Navigatable
|
||||
import com.intellij.psi.PsiManager
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.scratch.*
|
||||
import org.jetbrains.kotlin.idea.scratch.output.InlayScratchOutputHandler
|
||||
import org.jetbrains.kotlin.idea.scratch.output.ScratchOutputHandlerAdapter
|
||||
@@ -93,6 +94,11 @@ class KtScratchFileEditorWithPreview private constructor(
|
||||
inlayOutputHandler.clear(scratchFile)
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
fun setPreviewEnabled(isPreviewEnabled: Boolean) {
|
||||
layout = if (isPreviewEnabled) Layout.SHOW_EDITOR_AND_PREVIEW else Layout.SHOW_EDITOR
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun create(scratchFile: ScratchFile): KtScratchFileEditorWithPreview {
|
||||
val textEditorProvider = TextEditorProvider.getInstance()
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.idea.scratch.actions.RunScratchAction
|
||||
import org.jetbrains.kotlin.idea.scratch.actions.ScratchCompilationSupport
|
||||
import org.jetbrains.kotlin.idea.scratch.output.InlayScratchFileRenderer
|
||||
import org.jetbrains.kotlin.idea.scratch.output.getInlays
|
||||
import org.jetbrains.kotlin.idea.scratch.ui.KtScratchFileEditorWithPreview
|
||||
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
@@ -175,12 +176,12 @@ abstract class AbstractScratchRunActionTest : FileEditorManagerTestCase() {
|
||||
|
||||
ScriptDependenciesManager.updateScriptDependenciesSynchronously(scratchVirtualFile, project)
|
||||
|
||||
val scratchFile = getScratchFileFromEditorSelectedForFile(myManager, myFixture.file.virtualFile)
|
||||
val scratchFileEditor = getScratchEditorForSelectedFile(myManager, myFixture.file.virtualFile)
|
||||
?: error("Couldn't find scratch file")
|
||||
|
||||
configureOptions(scratchFile, text, myFixture.module)
|
||||
configureOptions(scratchFileEditor, text, myFixture.module)
|
||||
|
||||
return scratchFile
|
||||
return scratchFileEditor.scratchFile
|
||||
}
|
||||
|
||||
protected fun configureWorksheetByText(name: String, text: String): ScratchFile {
|
||||
@@ -188,14 +189,14 @@ abstract class AbstractScratchRunActionTest : FileEditorManagerTestCase() {
|
||||
|
||||
ScriptDependenciesManager.updateScriptDependenciesSynchronously(worksheetFile, project)
|
||||
|
||||
val scratchFile = getScratchFileFromEditorSelectedForFile(myManager, myFixture.file.virtualFile)
|
||||
val scratchFileEditor = getScratchEditorForSelectedFile(myManager, myFixture.file.virtualFile)
|
||||
?: error("Couldn't find scratch panel")
|
||||
|
||||
// We want to check that correct module is selected automatically,
|
||||
// that's why we set `module` to null so it wouldn't be changed
|
||||
configureOptions(scratchFile, text, null)
|
||||
configureOptions(scratchFileEditor, text, null)
|
||||
|
||||
return scratchFile
|
||||
return scratchFileEditor.scratchFile
|
||||
}
|
||||
|
||||
|
||||
@@ -227,7 +228,7 @@ abstract class AbstractScratchRunActionTest : FileEditorManagerTestCase() {
|
||||
|
||||
protected fun stopReplProcess() {
|
||||
if (myFixture.file != null) {
|
||||
val scratchFile = getScratchFileFromEditorSelectedForFile(myManager, myFixture.file.virtualFile)
|
||||
val scratchFile = getScratchEditorForSelectedFile(myManager, myFixture.file.virtualFile)?.scratchFile
|
||||
?: error("Couldn't find scratch panel")
|
||||
scratchFile.replScratchExecutor?.stopAndWait()
|
||||
}
|
||||
@@ -303,10 +304,12 @@ abstract class AbstractScratchRunActionTest : FileEditorManagerTestCase() {
|
||||
}
|
||||
|
||||
fun configureOptions(
|
||||
scratchFile: ScratchFile,
|
||||
scratchFileEditor: KtScratchFileEditorWithPreview,
|
||||
fileText: String,
|
||||
module: Module?
|
||||
) {
|
||||
val scratchFile = scratchFileEditor.scratchFile
|
||||
|
||||
if (InTextDirectivesUtils.getPrefixedBoolean(fileText, "// INTERACTIVE_MODE: ") != true) {
|
||||
scratchFile.saveOptions { copy(isInteractiveMode = false) }
|
||||
}
|
||||
@@ -318,6 +321,9 @@ abstract class AbstractScratchRunActionTest : FileEditorManagerTestCase() {
|
||||
if (module != null && !InTextDirectivesUtils.isDirectiveDefined(fileText, "// NO_MODULE")) {
|
||||
scratchFile.setModule(module)
|
||||
}
|
||||
|
||||
val isPreviewEnabled = InTextDirectivesUtils.getPrefixedBoolean(fileText, "// PREVIEW_ENABLED: ") == true
|
||||
scratchFileEditor.setPreviewEnabled(isPreviewEnabled)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -39,10 +39,10 @@ abstract class AbstractScratchLineMarkersTest : FileEditorManagerTestCase() {
|
||||
|
||||
ScriptDependenciesManager.updateScriptDependenciesSynchronously(scratchVirtualFile, project)
|
||||
|
||||
val scratchFile = getScratchFileFromEditorSelectedForFile(FileEditorManager.getInstance(project), myFixture.file.virtualFile)
|
||||
val scratchFileEditor = getScratchEditorForSelectedFile(FileEditorManager.getInstance(project), myFixture.file.virtualFile)
|
||||
?: error("Couldn't find scratch panel")
|
||||
|
||||
configureOptions(scratchFile, fileText, null)
|
||||
configureOptions(scratchFileEditor, fileText, null)
|
||||
|
||||
val project = myFixture.project
|
||||
val document = myFixture.editor.document
|
||||
|
||||
Reference in New Issue
Block a user