1
0
mirror of https://github.com/mamoe/mirai.git synced 2025-03-30 09:50:12 +08:00

[mock] Fix mockUploadAudio always throws ISE, part of

This commit is contained in:
Him188 2023-03-19 12:28:35 +00:00
parent db3a0ad24a
commit 43b5e710ef
No known key found for this signature in database
GPG Key ID: BA439CDDCF652375
2 changed files with 29 additions and 9 deletions
mirai-core-mock
src/internal/contact
test

View File

@ -1,5 +1,5 @@
/*
* Copyright 2019-2022 Mamoe Technologies and contributors.
* Copyright 2019-2023 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.
@ -50,14 +50,17 @@ internal fun MessageSource.withMessage(msg: Message): MessageChain = buildMessag
}
@Suppress("UNUSED_PARAMETER")
internal suspend fun ExternalResource.mockUploadAudio(bot: MockBot) = inResource {
OfflineAudio(
filename = md5.toUHexString() + ".amr",
fileMd5 = md5,
fileSize = size,
codec = AudioCodec.SILK,
extraData = null,
)
internal suspend fun ExternalResource.mockUploadAudio(bot: MockBot): OfflineAudio {
val md5 = md5 // calculate before using resource
return inResource {
OfflineAudio(
filename = md5.toUHexString() + ".amr",
fileMd5 = md5,
fileSize = size,
codec = AudioCodec.SILK,
extraData = null,
)
}
}
internal suspend fun ExternalResource.mockUploadVoice(bot: MockBot) = kotlin.run {

View File

@ -18,6 +18,7 @@ import kotlinx.coroutines.flow.toList
import net.mamoe.mirai.contact.MemberPermission
import net.mamoe.mirai.event.events.GroupMessageEvent
import net.mamoe.mirai.message.data.FileMessage
import net.mamoe.mirai.mock.internal.contact.mockUploadAudio
import net.mamoe.mirai.mock.internal.remotefile.absolutefile.MockRemoteFiles
import net.mamoe.mirai.mock.internal.serverfs.MockServerFileSystemImpl
import net.mamoe.mirai.mock.utils.simpleMemberInfo
@ -145,4 +146,20 @@ internal class AbsoluteFileTest : MockBotTestBase() {
}
assertEquals(0, group.files.root.resolveFiles("/a").count())
}
@Test
@Suppress("INVISIBLE_REFERENCE")
fun testMockUploadAudio() = runTest {
val file = runBIO {
kotlin.io.path.createTempFile("test", ".txt").toFile().apply {
writeText("test")
deleteOnExit()
}
}
file.toExternalResource().use {
assertIsInstance<net.mamoe.mirai.internal.utils.ExternalResourceImplByFile>(it)
it.mockUploadAudio(bot)
}
}
}