Skip to content

Commit 75e809c

Browse files
committed
refactor(testing): refactor JSWriteTestService
- Remove unused import statements - Refactor `getTestFilePath` method to improve readability and performance - Use `WriteCommandAction` to create test directory for tests
1 parent c36aa3f commit 75e809c

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@ jobs:
107107
uses: codecov/codecov-action@v3
108108
env:
109109
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
110-
with:
111-
files: ${{ github.workspace }}/build/reports/kover/xml/report.xml
112110

113111
# Prepare plugin archive content for creating artifact
114112
- name: Prepare Plugin Artifact

javascript/src/main/kotlin/cc/unitmesh/ide/javascript/provider/testing/JSWriteTestService.kt

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@ import com.intellij.lang.javascript.psi.ecmal4.JSClass
1212
import com.intellij.openapi.application.ReadAction
1313
import com.intellij.openapi.application.runReadAction
1414
import com.intellij.openapi.application.runWriteAction
15+
import com.intellij.openapi.command.WriteCommandAction
1516
import com.intellij.openapi.project.Project
1617
import com.intellij.openapi.project.guessProjectDir
1718
import com.intellij.openapi.vfs.LocalFileSystem
19+
import com.intellij.openapi.vfs.VirtualFile
1820
import com.intellij.psi.*
1921
import com.intellij.psi.util.PsiTreeUtil
2022
import java.io.File
23+
import java.io.IOException
2124
import java.nio.file.Path
2225
import kotlin.io.path.Path
2326
import kotlin.io.path.nameWithoutExtension
@@ -118,35 +121,38 @@ class JSWriteTestService : WriteTestService() {
118121

119122
if (elementForTests == null) return null
120123

121-
return if (JSPsiUtil.isExportedClassPublicMethod(elementForTests) ||
122-
JSPsiUtil.isExportedFileFunction(elementForTests) ||
123-
JSPsiUtil.isExportedClass(elementForTests)
124-
) {
125-
elementForTests
126-
} else {
127-
null
124+
return when {
125+
JSPsiUtil.isExportedClassPublicMethod(elementForTests) -> elementForTests
126+
JSPsiUtil.isExportedFileFunction(elementForTests) -> elementForTests
127+
JSPsiUtil.isExportedClass(elementForTests) -> elementForTests
128+
else -> {
129+
null
130+
}
128131
}
129132
}
130133

131134
fun getTestFilePath(element: PsiElement): Path? {
132135
val testDirectory = suggestTestDirectory(element) ?: return null
133-
val containingFile: PsiFile = element.containingFile ?: return null
136+
val containingFile: PsiFile = runReadAction { element.containingFile } ?: return null
134137
val extension = containingFile.virtualFile?.extension ?: return null
135138
val elementName = JSPsiUtil.elementName(element) ?: return null
136139
val testFile: Path = generateUniqueTestFile(elementName, containingFile, testDirectory, extension).toPath()
137140
return testFile
138141
}
139142

140143
private fun suggestTestDirectory(element: PsiElement): PsiDirectory? {
141-
val project: Project = runReadAction { element.project }
144+
val project: Project = element.project
142145
val elementDirectory = runReadAction { element.containingFile }
143146

144147
val parentDir = elementDirectory?.virtualFile?.parent ?: return null
145-
val childDir = runWriteAction {
146-
parentDir.createChildDirectory(this, "test")
147-
}
148148

149-
return PsiManager.getInstance(project).findDirectory(childDir)
149+
return WriteCommandAction.writeCommandAction(project, elementDirectory)
150+
.withName("Creating Directory For Tests")
151+
.compute<VirtualFile?, IOException> {
152+
return@compute parentDir.createChildDirectory(this, "test")
153+
}?.let {
154+
return runReadAction { PsiManager.getInstance(project).findDirectory(it) }
155+
}
150156
}
151157

152158
private fun generateUniqueTestFile(

0 commit comments

Comments
 (0)