Переглянути джерело

Do not call 'exitProcess' in console backend, but in terminal

Him188 4 роки тому
батько
коміт
2dda2ff31b

+ 1 - 9
backend/mirai-console/src/MiraiConsoleImplementation.kt

@@ -36,7 +36,6 @@ import java.util.*
 import java.util.concurrent.locks.ReentrantLock
 import kotlin.annotation.AnnotationTarget.*
 import kotlin.coroutines.CoroutineContext
-import kotlin.system.exitProcess
 
 
 /**
@@ -286,14 +285,7 @@ public interface MiraiConsoleImplementation : CoroutineScope {
                 }.onFailure {
                     it.printStackTrace()
                 }
-                Thread.sleep(3000L) // 保证信息打印完成
-                if (!IS_GRADLE_TEST) exitProcess(1)
-                // For gradle tests, killing the JVM also kills a Gradle worker which cause './gradlew test' to fail.
-                // See https://github.com/gradle/gradle/issues/11195 for more information.
             }
         }
     }
-}
-
-@JvmField
-internal var IS_GRADLE_TEST = false
+}

+ 0 - 1
backend/mirai-console/test/TestMiraiConosle.kt

@@ -33,7 +33,6 @@ import kotlin.test.assertNotNull
 
 @OptIn(ConsoleInternalApi::class, kotlin.io.path.ExperimentalPathApi::class)
 fun initTestEnvironment() {
-    IS_GRADLE_TEST = true
     object : MiraiConsoleImplementation {
         override val rootPath: Path = createTempDirectory()
 

+ 4 - 0
frontend/mirai-console-terminal/src/MiraiConsoleTerminalLoader.kt

@@ -47,6 +47,10 @@ object MiraiConsoleTerminalLoader {
         startAsDaemon()
         try {
             runBlocking {
+                MiraiConsole.job.invokeOnCompletion {
+                    Thread.sleep(1000) // 保证错误信息打印完全
+                    exitProcess(0)
+                }
                 MiraiConsole.job.join()
             }
         } catch (e: CancellationException) {