From cd7d80855a73a9bb27e68a603093243c797fe690 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Fri, 15 Oct 2021 20:22:51 +0300 Subject: [PATCH] Don't show notifications capturing a project instance in the headless mode Otherwise, notifications triggered by exceptions and not shown lead to a project leakage in tests. GitOrigin-RevId: b0a6672ef4dc6ad9fd92eb15a08042afe17ea99d --- .../python/sdk/PythonSdkUpdater.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/python/src/com/jetbrains/python/sdk/PythonSdkUpdater.java b/python/src/com/jetbrains/python/sdk/PythonSdkUpdater.java index 7b43df8ec714..90a11573b349 100644 --- a/python/src/com/jetbrains/python/sdk/PythonSdkUpdater.java +++ b/python/src/com/jetbrains/python/sdk/PythonSdkUpdater.java @@ -200,16 +200,26 @@ public class PythonSdkUpdater implements StartupActivity.Background { updateSdkPaths(sdk, getRemoteSdkMappedPaths(sdk), getProject()); } } - catch (UnsupportedPythonSdkTypeException e) { + catch (UnsupportedPythonSdkTypeException | InvalidSdkException e) { + notifyOfGenerationFailure(e, sdk); + } + } + + private void notifyOfGenerationFailure(@NotNull Exception exception, @NotNull Sdk sdk) { + if (ApplicationManager.getApplication().isHeadlessEnvironment()) { + LOG.warn(exception); + return; + } + if (exception instanceof UnsupportedPythonSdkTypeException) { NOTIFICATION_GROUP .createNotification(PyBundle.message("sdk.gen.failed.notification.title"), PyBundle.message("remote.interpreter.support.is.not.available", sdk.getName()), NotificationType.WARNING) .notify(myProject); } - catch (InvalidSdkException e) { + else if (exception instanceof InvalidSdkException) { if (PythonSdkUtil.isRemote(PythonSdkUtil.findSdkByKey(mySdkKey))) { - PythonSdkType.notifyRemoteSdkSkeletonsFail(e, () -> { + PythonSdkType.notifyRemoteSdkSkeletonsFail((InvalidSdkException)exception, () -> { Sdk revalidatedSdk = PythonSdkUtil.findSdkByKey(mySdkKey); if (revalidatedSdk != null) { update(revalidatedSdk, myProject, null); @@ -217,7 +227,7 @@ public class PythonSdkUpdater implements StartupActivity.Background { }); } else if (!PythonSdkUtil.isInvalid(sdk)) { - LOG.error(e); + LOG.error(exception); } } } @@ -240,7 +250,7 @@ public class PythonSdkUpdater implements StartupActivity.Background { } } - if (requestData != null) { + if ( requestData != null) { ProgressManager.getInstance().run(new PyUpdateSdkTask(myProject, mySdkKey, requestData)); } }