Terminal: make MiraiConsoleImplementationTerminal open and enable all logs for tests

This commit is contained in:
Him188 2021-04-10 14:57:08 +08:00
parent 824a72b2e7
commit 85322b3321
2 changed files with 39 additions and 14 deletions

View File

@ -1,10 +1,10 @@
/* /*
* Copyright 2019-2020 Mamoe Technologies and contributors. * Copyright 2019-2021 Mamoe Technologies and contributors.
* *
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found through the following link. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
* *
* https://github.com/mamoe/mirai/blob/master/LICENSE * https://github.com/mamoe/mirai/blob/master/LICENSE
*/ */
@file:Suppress( @file:Suppress(
@ -55,9 +55,9 @@ import java.nio.file.Paths
* @see MiraiConsoleTerminalLoader CLI 入口点 * @see MiraiConsoleTerminalLoader CLI 入口点
*/ */
@ConsoleExperimentalApi @ConsoleExperimentalApi
class MiraiConsoleImplementationTerminal open class MiraiConsoleImplementationTerminal
@JvmOverloads constructor( @JvmOverloads constructor(
override val rootPath: Path = Paths.get(System.getProperty("user.dir", ".")).toAbsolutePath(), final override val rootPath: Path = Paths.get(System.getProperty("user.dir", ".")).toAbsolutePath(),
override val builtInPluginLoaders: List<Lazy<PluginLoader<*, *>>> = listOf(lazy { JvmPluginLoader }), override val builtInPluginLoaders: List<Lazy<PluginLoader<*, *>>> = listOf(lazy { JvmPluginLoader }),
override val frontEndDescription: MiraiConsoleFrontEndDescription = ConsoleFrontEndDescImpl, override val frontEndDescription: MiraiConsoleFrontEndDescription = ConsoleFrontEndDescImpl,
override val consoleCommandSender: MiraiConsoleImplementation.ConsoleCommandSenderImpl = ConsoleCommandSenderImplTerminal, override val consoleCommandSender: MiraiConsoleImplementation.ConsoleCommandSenderImpl = ConsoleCommandSenderImplTerminal,
@ -67,13 +67,13 @@ class MiraiConsoleImplementationTerminal
override val configStorageForBuiltIns: PluginDataStorage = MultiFilePluginDataStorage(rootPath.resolve("config")), override val configStorageForBuiltIns: PluginDataStorage = MultiFilePluginDataStorage(rootPath.resolve("config")),
) : MiraiConsoleImplementation, CoroutineScope by CoroutineScope( ) : MiraiConsoleImplementation, CoroutineScope by CoroutineScope(
NamedSupervisorJob("MiraiConsoleImplementationTerminal") + NamedSupervisorJob("MiraiConsoleImplementationTerminal") +
CoroutineExceptionHandler { coroutineContext, throwable -> CoroutineExceptionHandler { coroutineContext, throwable ->
if (throwable is CancellationException) { if (throwable is CancellationException) {
return@CoroutineExceptionHandler return@CoroutineExceptionHandler
} }
val coroutineName = coroutineContext[CoroutineName]?.name ?: "<unnamed>" val coroutineName = coroutineContext[CoroutineName]?.name ?: "<unnamed>"
MiraiConsole.mainLogger.error("Exception in coroutine $coroutineName", throwable) MiraiConsole.mainLogger.error("Exception in coroutine $coroutineName", throwable)
}) { }) {
override val consoleInput: ConsoleInput get() = ConsoleInputImpl override val consoleInput: ConsoleInput get() = ConsoleInputImpl
override val isAnsiSupported: Boolean get() = true override val isAnsiSupported: Boolean get() = true

View File

@ -11,12 +11,37 @@ package net.mamoe.mirai.console.terminal
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import net.mamoe.mirai.console.MiraiConsole import net.mamoe.mirai.console.MiraiConsole
import net.mamoe.mirai.console.extensions.BotConfigurationAlterer
import net.mamoe.mirai.console.logging.LoggerController
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
import net.mamoe.mirai.utils.MiraiLogger
import net.mamoe.mirai.utils.SimpleLogger
import java.io.File import java.io.File
fun main() { fun main() {
configureUserDir() configureUserDir()
MiraiConsoleTerminalLoader.startAsDaemon() val terminal = object : MiraiConsoleImplementationTerminal() {
override val loggerController: LoggerController = object : LoggerController {
override fun shouldLog(identity: String?, priority: SimpleLogger.LogPriority): Boolean = true
}
}
val mockPlugin = object : KotlinPlugin(JvmPluginDescription("org.test.test", "1.0.0")) {}
terminal.backendAccess.globalComponentStorage.contribute(
BotConfigurationAlterer,
mockPlugin,
BotConfigurationAlterer { _, configuration ->
configuration.networkLoggerSupplier = { MiraiLogger.create("Net.${it.id}") } // deploy
configuration
}
)
MiraiConsoleTerminalLoader.startAsDaemon(terminal)
runCatching { runBlocking { MiraiConsole.job.join() } } runCatching { runBlocking { MiraiConsole.job.join() } }
} }