2
0
Эх сурвалжийг харах

Add ConsoleDataScopeImpl.set for test onlyˆ

Him188 4 жил өмнө
parent
commit
b1d66c0d20

+ 10 - 0
mirai-console/backend/mirai-console/src/internal/data/builtins/ConsoleDataScopeImpl.kt

@@ -15,6 +15,7 @@ import net.mamoe.mirai.console.data.AutoSavePluginDataHolder
 import net.mamoe.mirai.console.data.PluginConfig
 import net.mamoe.mirai.console.data.PluginData
 import net.mamoe.mirai.console.data.PluginDataStorage
+import net.mamoe.mirai.utils.TestOnly
 import net.mamoe.mirai.utils.childScope
 import net.mamoe.mirai.utils.minutesToMillis
 import java.util.concurrent.ConcurrentLinkedQueue
@@ -45,6 +46,15 @@ internal class ConsoleDataScopeImpl(
         return (data.find { type.isInstance(it) } ?: configs.find { type.isInstance(it) }) as T?
     }
 
+    /**
+     * Set and override, for tests only.
+     */
+    @TestOnly
+    inline fun <reified T : PluginData> set(value: T) {
+        data.removeIf { value::class.isInstance(it) }
+        data.add(value)
+    }
+
     override fun reloadAll() {
         data.forEach { dt ->
             dataStorage.load(dataHolder, dt)