diff --git a/backend/mirai-console/test/AbstractConsoleTest.kt b/backend/mirai-console/test/AbstractConsoleTest.kt deleted file mode 100644 index 54e58265b..000000000 --- a/backend/mirai-console/test/AbstractConsoleTest.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2019-2021 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * 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 - */ - -package net.mamoe.mirai.console - -import kotlinx.coroutines.cancelAndJoin -import kotlinx.coroutines.runBlocking -import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription -import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin -import org.junit.jupiter.api.AfterEach -import org.junit.jupiter.api.BeforeEach - -abstract class AbstractConsoleTest { - val mockPlugin = object : KotlinPlugin(JvmPluginDescription("org.test.test", "1.0.0")) {} - - @BeforeEach - fun beforeTest() { - initTestEnvironment() - } - - @AfterEach - fun afterTest() { - runBlocking { MiraiConsole.job.cancelAndJoin() } - } -} \ No newline at end of file diff --git a/backend/mirai-console/test/TestMiraiConosle.kt b/backend/mirai-console/test/TestMiraiConosle.kt index 4eafd89aa..ac8f53a09 100644 --- a/backend/mirai-console/test/TestMiraiConosle.kt +++ b/backend/mirai-console/test/TestMiraiConosle.kt @@ -76,9 +76,10 @@ fun initTestEnvironment() { return PlatformLogger(identity) } - override val coroutineContext: CoroutineContext = SupervisorJob() + CoroutineExceptionHandler { _, throwable -> - throwable.printStackTrace() - } + override val coroutineContext: CoroutineContext = + CoroutineName("Console Main") + SupervisorJob() + CoroutineExceptionHandler { _, throwable -> + throwable.printStackTrace() + } }.start() CommandManager } diff --git a/backend/mirai-console/test/data/JavaPluginDescriptionTests.kt b/backend/mirai-console/test/data/JavaPluginDescriptionTests.kt index bd13bb1b1..1541a9b91 100644 --- a/backend/mirai-console/test/data/JavaPluginDescriptionTests.kt +++ b/backend/mirai-console/test/data/JavaPluginDescriptionTests.kt @@ -8,7 +8,7 @@ */ package data -import net.mamoe.mirai.console.AbstractConsoleTest +import net.mamoe.mirai.console.framework.AbstractConsoleTest @Suppress("unused") class JavaPluginDescriptionTests : AbstractConsoleTest() { diff --git a/backend/mirai-console/test/framework/AbstractConsoleTest.kt b/backend/mirai-console/test/framework/AbstractConsoleTest.kt new file mode 100644 index 000000000..41815128c --- /dev/null +++ b/backend/mirai-console/test/framework/AbstractConsoleTest.kt @@ -0,0 +1,49 @@ +/* + * Copyright 2019-2021 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * 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/dev/LICENSE + */ + +package net.mamoe.mirai.console.framework + +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.cancelAndJoin +import kotlinx.coroutines.runBlocking +import net.mamoe.mirai.console.MiraiConsole +import net.mamoe.mirai.console.MiraiConsoleImplementation +import net.mamoe.mirai.console.initTestEnvironment +import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription +import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin +import org.junit.jupiter.api.AfterEach +import org.junit.jupiter.api.BeforeEach + +abstract class AbstractConsoleTest { + val mockPlugin by lazy { mockKotlinPlugin() } + + @BeforeEach + protected open fun initializeConsole() { + initTestEnvironment() + } + + @AfterEach + protected open fun cancelConsole() { + if (MiraiConsoleImplementation.instanceInitialized) { + try { + runBlocking { MiraiConsole.job.cancelAndJoin() } + } catch (e: CancellationException) { + // ignored + } catch (e: Exception) { + e.printStackTrace() + } + } + } + + companion object { + fun mockKotlinPlugin(): KotlinPlugin { + return object : KotlinPlugin(JvmPluginDescription("org.test.test", "1.0.0")) {} + } + } +} \ No newline at end of file diff --git a/backend/mirai-console/test/framework/test/FrameworkTest.kt b/backend/mirai-console/test/framework/test/FrameworkTest.kt new file mode 100644 index 000000000..8839c4833 --- /dev/null +++ b/backend/mirai-console/test/framework/test/FrameworkTest.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2019-2021 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * 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/dev/LICENSE + */ + +package net.mamoe.mirai.console.framework.test + +import net.mamoe.mirai.console.framework.AbstractConsoleTest +import net.mamoe.mirai.console.plugin.PluginManager +import org.junit.jupiter.api.Test +import kotlin.test.assertEquals + +class FrameworkTest : AbstractConsoleTest() { + + @Test + fun testConsole1() { + assertEquals(0, PluginManager.plugins.size) + } + + @Test + fun testConsole2() { + assertEquals(0, PluginManager.plugins.size) + } +} \ No newline at end of file