diff --git a/mirai-core/src/androidTest/kotlin/package.kt b/mirai-core/src/androidTest/kotlin/package.kt new file mode 100644 index 000000000..011261472 --- /dev/null +++ b/mirai-core/src/androidTest/kotlin/package.kt @@ -0,0 +1,10 @@ +/* + * 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.internal \ No newline at end of file diff --git a/mirai-core/src/androidTest/kotlin/test/initPlatform.android.kt b/mirai-core/src/androidTest/kotlin/test/initPlatform.android.kt new file mode 100644 index 000000000..94ac23a97 --- /dev/null +++ b/mirai-core/src/androidTest/kotlin/test/initPlatform.android.kt @@ -0,0 +1,23 @@ +/* + * 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.internal.test + +import net.mamoe.mirai.utils.MiraiLogger + +internal actual fun initPlatform() { + init +} + +private val init by lazy { + MiraiLogger.setDefaultLoggerCreator { + @Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") + net.mamoe.mirai.internal.utils.StdoutLogger(it) + } +} \ No newline at end of file diff --git a/mirai-core/src/commonMain/kotlin/message/LongMessageInternal.kt b/mirai-core/src/commonMain/kotlin/message/LongMessageInternal.kt index ec78f4f2f..bd1c75802 100644 --- a/mirai-core/src/commonMain/kotlin/message/LongMessageInternal.kt +++ b/mirai-core/src/commonMain/kotlin/message/LongMessageInternal.kt @@ -15,7 +15,6 @@ import net.mamoe.mirai.internal.MiraiImpl import net.mamoe.mirai.internal.asQQAndroidBot import net.mamoe.mirai.internal.network.protocol.data.proto.MsgTransmit import net.mamoe.mirai.message.data.* -import net.mamoe.mirai.utils.cast import net.mamoe.mirai.utils.safeCast // internal runtime value, not serializable @@ -79,7 +78,7 @@ internal data class ForwardMessageInternal( brief = brief, source = source, summary = summary.trim(), - nodeList = Mirai.cast().run { transmits.toForwardMessageNodes(bot, refineContext) } + nodeList = MiraiImpl.run { transmits.toForwardMessageNodes(bot, refineContext) } ) } diff --git a/mirai-core/src/commonTest/kotlin/PlatformUtilsTest.kt b/mirai-core/src/commonTest/kotlin/PlatformUtilsTest.kt index 2723deb08..042bbb61e 100644 --- a/mirai-core/src/commonTest/kotlin/PlatformUtilsTest.kt +++ b/mirai-core/src/commonTest/kotlin/PlatformUtilsTest.kt @@ -10,11 +10,12 @@ package net.mamoe.mirai.internal import kotlinx.io.core.toByteArray +import net.mamoe.mirai.internal.test.AbstractTest import net.mamoe.mirai.utils.* import kotlin.test.Test import kotlin.test.assertEquals -internal class PlatformUtilsTest { +internal class PlatformUtilsTest : AbstractTest() { @Test fun testZip() { diff --git a/mirai-core/src/commonTest/kotlin/ScheduledJobTest.kt b/mirai-core/src/commonTest/kotlin/ScheduledJobTest.kt index ce3fb6ad3..dd9113a4b 100644 --- a/mirai-core/src/commonTest/kotlin/ScheduledJobTest.kt +++ b/mirai-core/src/commonTest/kotlin/ScheduledJobTest.kt @@ -12,13 +12,14 @@ import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.runBlocking +import net.mamoe.mirai.internal.test.AbstractTest import net.mamoe.mirai.internal.utils.ScheduledJob import org.junit.jupiter.api.Test import java.util.concurrent.atomic.AtomicInteger import kotlin.test.assertEquals import kotlin.time.seconds -internal class ScheduledJobTest { +internal class ScheduledJobTest : AbstractTest() { @Test fun testScheduledJob() { runBlocking { diff --git a/mirai-core/src/commonTest/kotlin/TypeConversionTest.kt b/mirai-core/src/commonTest/kotlin/TypeConversionTest.kt index 0acd104d1..7d2f61f35 100644 --- a/mirai-core/src/commonTest/kotlin/TypeConversionTest.kt +++ b/mirai-core/src/commonTest/kotlin/TypeConversionTest.kt @@ -9,6 +9,7 @@ package net.mamoe.mirai.internal +import net.mamoe.mirai.internal.test.AbstractTest import net.mamoe.mirai.utils.hexToBytes import net.mamoe.mirai.utils.toByteArray import net.mamoe.mirai.utils.toUHexString @@ -16,7 +17,7 @@ import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue -class TypeConversionTest { +internal class TypeConversionTest : AbstractTest() { @ExperimentalUnsignedTypes @Test diff --git a/mirai-core/src/commonTest/kotlin/internal/utils/FileSystemTest.kt b/mirai-core/src/commonTest/kotlin/internal/utils/FileSystemTest.kt index 69c6c06ff..5defec88a 100644 --- a/mirai-core/src/commonTest/kotlin/internal/utils/FileSystemTest.kt +++ b/mirai-core/src/commonTest/kotlin/internal/utils/FileSystemTest.kt @@ -10,11 +10,12 @@ package net.mamoe.mirai.internal.utils +import net.mamoe.mirai.internal.test.AbstractTest import org.junit.jupiter.api.Test import kotlin.test.assertEquals import kotlin.test.assertFailsWith -internal class FileSystemTest { +internal class FileSystemTest : AbstractTest() { private val fs = FileSystem diff --git a/mirai-core/src/commonTest/kotlin/message/code/TestMiraiCode.kt b/mirai-core/src/commonTest/kotlin/message/code/TestMiraiCode.kt index b1f134767..16bd33f5d 100644 --- a/mirai-core/src/commonTest/kotlin/message/code/TestMiraiCode.kt +++ b/mirai-core/src/commonTest/kotlin/message/code/TestMiraiCode.kt @@ -11,6 +11,7 @@ package net.mamoe.mirai.internal.message.code +import net.mamoe.mirai.internal.test.AbstractTest import net.mamoe.mirai.message.code.MiraiCode.deserializeMiraiCode import net.mamoe.mirai.message.code.internal.MiraiCodeParser import net.mamoe.mirai.message.data.* @@ -18,7 +19,7 @@ import org.junit.jupiter.api.Test import kotlin.test.assertEquals import kotlin.test.assertNotNull -class TestMiraiCode { +class TestMiraiCode : AbstractTest() { @Test fun testDynamicMiraiCodeParser() { fun runTest(args: Int, code: String, parse: (args: Array) -> Unit) { diff --git a/mirai-core/src/commonTest/kotlin/test/initPlatform.common.kt b/mirai-core/src/commonTest/kotlin/test/initPlatform.common.kt new file mode 100644 index 000000000..b487ab37a --- /dev/null +++ b/mirai-core/src/commonTest/kotlin/test/initPlatform.common.kt @@ -0,0 +1,21 @@ +/* + * 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.internal.test + +internal expect fun initPlatform() + +/** + * All test classes should inherit from [AbstractTest] + */ +abstract class AbstractTest { + init { + initPlatform() + } +} \ No newline at end of file diff --git a/mirai-core/src/jvmTest/kotlin/AbstractTestWithMiraiImpl.kt b/mirai-core/src/jvmTest/kotlin/AbstractTestWithMiraiImpl.kt index d1b1ded38..805a83203 100644 --- a/mirai-core/src/jvmTest/kotlin/AbstractTestWithMiraiImpl.kt +++ b/mirai-core/src/jvmTest/kotlin/AbstractTestWithMiraiImpl.kt @@ -10,11 +10,13 @@ package net.mamoe.mirai.internal +import net.mamoe.mirai.IMirai import net.mamoe.mirai.Mirai +import net.mamoe.mirai.internal.test.AbstractTest import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach -internal abstract class AbstractTestWithMiraiImpl : MiraiImpl() { +internal abstract class AbstractTestWithMiraiImpl : IMirai by MiraiImpl(), AbstractTest() { private val originalImpl = Mirai @BeforeEach diff --git a/mirai-core/src/jvmTest/kotlin/message/data/MessageRefineTest.kt b/mirai-core/src/jvmTest/kotlin/message/data/MessageRefineTest.kt index 2b1aadd78..9d037cb27 100644 --- a/mirai-core/src/jvmTest/kotlin/message/data/MessageRefineTest.kt +++ b/mirai-core/src/jvmTest/kotlin/message/data/MessageRefineTest.kt @@ -13,7 +13,6 @@ package net.mamoe.mirai.internal.message.data import kotlinx.serialization.decodeFromHexString import kotlinx.serialization.protobuf.ProtoBuf import net.mamoe.mirai.Bot -import net.mamoe.mirai.Mirai import net.mamoe.mirai.internal.AbstractTestWithMiraiImpl import net.mamoe.mirai.internal.MiraiImpl import net.mamoe.mirai.internal.MockBot @@ -32,7 +31,6 @@ import net.mamoe.mirai.message.data.* import net.mamoe.mirai.message.data.MessageChain.Companion.serializeToJsonString import net.mamoe.mirai.utils.PlatformLogger import net.mamoe.mirai.utils.autoHexToBytes -import net.mamoe.mirai.utils.cast import org.junit.jupiter.api.Test import kotlin.random.Random import kotlin.test.assertEquals @@ -275,7 +273,7 @@ internal class MessageRefineTest : AbstractTestWithMiraiImpl() { @Test fun `test nested forward refinement`() = runBlockingUnit { - val redefined = Mirai.cast().run { testCases.nestedForward.toForwardMessageNodes(bot) } + val redefined = MiraiImpl.run { testCases.nestedForward.toForwardMessageNodes(bot) } assertNodesEquals( listOf( ForwardMessage.Node( diff --git a/mirai-core/src/jvmTest/kotlin/test/initPlatform.kt b/mirai-core/src/jvmTest/kotlin/test/initPlatform.kt new file mode 100644 index 000000000..2bfae352a --- /dev/null +++ b/mirai-core/src/jvmTest/kotlin/test/initPlatform.kt @@ -0,0 +1,14 @@ +/* + * 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.internal.test + +internal actual fun initPlatform() { + // nothing to do +} \ No newline at end of file