From 25b5853c079b9b0d0f3779ddbb55a2fcab7339b7 Mon Sep 17 00:00:00 2001 From: Alexey Kalina Date: Mon, 25 Mar 2024 12:23:59 +0100 Subject: [PATCH] [evaluation-plugin] ML-2969 Evaluation plugin failed to exit Application GitOrigin-RevId: ddca825741b6ec088c5e8329f0fbdfcd7d8b8b5d --- .../evaluation/step/HeadlessFinishEvaluationStep.kt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plugins/evaluation-plugin/src/com/intellij/cce/evaluation/step/HeadlessFinishEvaluationStep.kt b/plugins/evaluation-plugin/src/com/intellij/cce/evaluation/step/HeadlessFinishEvaluationStep.kt index a63be36efe51..31f3eef4921c 100644 --- a/plugins/evaluation-plugin/src/com/intellij/cce/evaluation/step/HeadlessFinishEvaluationStep.kt +++ b/plugins/evaluation-plugin/src/com/intellij/cce/evaluation/step/HeadlessFinishEvaluationStep.kt @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.cce.evaluation.step import com.intellij.cce.actions.ProjectOpeningUtils @@ -6,13 +6,14 @@ import com.intellij.cce.evaluation.FinishEvaluationStep import com.intellij.cce.workspace.EvaluationWorkspace import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.Project +import kotlin.system.exitProcess class HeadlessFinishEvaluationStep(private val project: Project) : FinishEvaluationStep { override fun start(workspace: EvaluationWorkspace, withErrors: Boolean) { if (withErrors) { println("Evaluation completed with errors.") ProjectOpeningUtils.closeProject(project) - ApplicationManager.getApplication().exit(true, false, false, 1) + exit(exitCode = 1) } else { print("Evaluation completed. ") if (workspace.getReports().isEmpty()) { @@ -23,7 +24,13 @@ class HeadlessFinishEvaluationStep(private val project: Project) : FinishEvaluat workspace.getReports().forEach { println("${it.key}: ${it.value}") } } ProjectOpeningUtils.closeProject(project) - ApplicationManager.getApplication().exit(true, false, false) + exit(exitCode = 0) } } + + private fun exit(exitCode: Int) = try { + ApplicationManager.getApplication().exit(true, false, false, exitCode) + } catch (t: Throwable) { + exitProcess(exitCode) + } }