From d1fcfa58504ea40f22e1c58eb2025b754f194ecb Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Mon, 30 Jun 2025 04:50:02 +0200 Subject: [PATCH] PY-82318: Kill process that keeps python installation. We create SDK in tests in a temporary dir and want to drop it then. However, some background python process (I blame package manager cache) keeps this directory which prevents it from being deleted on Windows. We now drop it. GitOrigin-RevId: 36e2045e57e6cfae2f31465ae6d6d8e505d5edac --- .../python/junit5Tests/framework/winLockedFile/impl/delete.kt | 2 +- .../env/terminal/PyVirtualEnvTerminalCustomizerTest.kt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/winLockedFile/impl/delete.kt b/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/winLockedFile/impl/delete.kt index ecd73e927574..64ab913d88ad 100644 --- a/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/winLockedFile/impl/delete.kt +++ b/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/winLockedFile/impl/delete.kt @@ -34,7 +34,7 @@ internal fun deleteCheckLockingImpl(path: Path, vararg processesToKill: Regex) { val fileName = Path.of(command).fileName.toString() if (processesToKill.any { it.matches(fileName) }) { val processInfo = WinProcessInfo.get(process.pid()) - fileLogger().info("Killing ${process.pid()} ${processInfo}") + fileLogger().warn("Killing ${process.pid()} ${processInfo}") killProcess(process) } } diff --git a/python/python-terminal/tests/com/intellij/python/junit5Tests/env/terminal/PyVirtualEnvTerminalCustomizerTest.kt b/python/python-terminal/tests/com/intellij/python/junit5Tests/env/terminal/PyVirtualEnvTerminalCustomizerTest.kt index df0726f33afe..f77130b90692 100644 --- a/python/python-terminal/tests/com/intellij/python/junit5Tests/env/terminal/PyVirtualEnvTerminalCustomizerTest.kt +++ b/python/python-terminal/tests/com/intellij/python/junit5Tests/env/terminal/PyVirtualEnvTerminalCustomizerTest.kt @@ -18,6 +18,7 @@ import com.intellij.python.community.junit5Tests.framework.conda.CondaEnv import com.intellij.python.community.junit5Tests.framework.conda.PyEnvTestCaseWithConda import com.intellij.python.community.junit5Tests.framework.conda.createCondaEnv import com.intellij.python.junit5Tests.framework.env.pySdkFixture +import com.intellij.python.junit5Tests.framework.winLockedFile.deleteCheckLocking import com.intellij.python.terminal.PyVirtualEnvTerminalCustomizer import com.intellij.testFramework.common.timeoutRunBlocking import com.intellij.testFramework.junit5.fixture.moduleFixture @@ -67,6 +68,9 @@ class PyVirtualEnvTerminalCustomizerTest { @AfterEach fun tearDown(): Unit = timeoutRunBlocking { sdkToDelete?.let { sdk -> + if (SystemInfo.isWindows) { + deleteCheckLocking(Path.of(sdk.homePath!!)) + } edtWriteAction { ProjectJdkTable.getInstance().removeJdk(sdk) }