test: Switch to kotest & test mixins
This commit is contained in:
@@ -317,8 +317,8 @@ dependencies {
|
||||
}
|
||||
|
||||
|
||||
testImplementation("io.kotest:kotest-runner-junit5:6.0.0.M1")
|
||||
testAgent(project(":testagent", configuration = "shadow"))
|
||||
testImplementation("net.fabricmc:fabric-loader-junit:${libs.versions.fabric.loader.get()}")
|
||||
testAgent(files(tasks.getByPath(":testagent:jar")))
|
||||
|
||||
implementation(projects.symbols)
|
||||
ksp(projects.symbols)
|
||||
|
||||
@@ -152,7 +152,7 @@ runtime_optional = [
|
||||
# "freecammod",
|
||||
# "sodium",
|
||||
# "qolify",
|
||||
"ncr",
|
||||
# "ncr",
|
||||
# "citresewn",
|
||||
]
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
|
||||
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -17,6 +18,7 @@ public class MixinPlugin implements IMixinConfigPlugin {
|
||||
AutoDiscoveryPlugin autoDiscoveryPlugin = new AutoDiscoveryPlugin();
|
||||
public static List<MixinPlugin> instances = new ArrayList<>();
|
||||
public String mixinPackage;
|
||||
|
||||
@Override
|
||||
public void onLoad(String mixinPackage) {
|
||||
MixinExtrasBootstrap.init();
|
||||
@@ -54,6 +56,17 @@ public class MixinPlugin implements IMixinConfigPlugin {
|
||||
|
||||
}
|
||||
|
||||
public Set<String> getAppliedFullPathMixins() {
|
||||
return new HashSet<>(appliedMixins);
|
||||
}
|
||||
|
||||
public Set<String> getExpectedFullPathMixins() {
|
||||
return getMixins()
|
||||
.stream()
|
||||
.map(it -> mixinPackage + "." + it)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public List<String> appliedMixins = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
|
||||
@@ -9,6 +9,7 @@ import io.github.notenoughupdates.moulconfig.gui.GuiContext
|
||||
import io.github.notenoughupdates.moulconfig.gui.GuiImmediateContext
|
||||
import io.github.notenoughupdates.moulconfig.gui.KeyboardEvent
|
||||
import io.github.notenoughupdates.moulconfig.gui.MouseEvent
|
||||
import io.github.notenoughupdates.moulconfig.gui.component.PanelComponent
|
||||
import io.github.notenoughupdates.moulconfig.observer.GetSetter
|
||||
import io.github.notenoughupdates.moulconfig.platform.ModernRenderContext
|
||||
import io.github.notenoughupdates.moulconfig.xml.ChildCount
|
||||
@@ -20,6 +21,7 @@ import java.io.File
|
||||
import java.util.function.Supplier
|
||||
import javax.xml.namespace.QName
|
||||
import me.shedaniel.math.Color
|
||||
import org.jetbrains.annotations.Unmodifiable
|
||||
import org.w3c.dom.Element
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
34
src/test/kotlin/MixinTest.kt
Normal file
34
src/test/kotlin/MixinTest.kt
Normal file
@@ -0,0 +1,34 @@
|
||||
package moe.nea.firmament.test
|
||||
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.spongepowered.asm.mixin.MixinEnvironment
|
||||
import org.spongepowered.asm.mixin.transformer.IMixinTransformer
|
||||
import moe.nea.firmament.init.MixinPlugin
|
||||
|
||||
class MixinTest {
|
||||
@Test
|
||||
fun mixinAudit() {
|
||||
FirmTestBootstrap.bootstrapMinecraft()
|
||||
MixinEnvironment.getCurrentEnvironment().audit()
|
||||
val mp = MixinPlugin.instances.single()
|
||||
Assertions.assertEquals(
|
||||
mp.expectedFullPathMixins,
|
||||
mp.appliedFullPathMixins,
|
||||
)
|
||||
Assertions.assertNotEquals(
|
||||
0,
|
||||
mp.mixins.size
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
fun hasInstalledMixinTransformer() {
|
||||
Assertions.assertInstanceOf(
|
||||
IMixinTransformer::class.java,
|
||||
MixinEnvironment.getCurrentEnvironment().activeTransformer
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ object FirmTestBootstrap {
|
||||
println("Bootstrap completed at $loadEnd after $loadDuration")
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun bootstrapMinecraft() {
|
||||
}
|
||||
}
|
||||
|
||||
14
src/test/kotlin/testutil/AutoBootstrapExtension.kt
Normal file
14
src/test/kotlin/testutil/AutoBootstrapExtension.kt
Normal file
@@ -0,0 +1,14 @@
|
||||
package moe.nea.firmament.test.testutil
|
||||
|
||||
import com.google.auto.service.AutoService
|
||||
import org.junit.jupiter.api.extension.BeforeAllCallback
|
||||
import org.junit.jupiter.api.extension.Extension
|
||||
import org.junit.jupiter.api.extension.ExtensionContext
|
||||
import moe.nea.firmament.test.FirmTestBootstrap
|
||||
|
||||
@AutoService(Extension::class)
|
||||
class AutoBootstrapExtension : Extension, BeforeAllCallback {
|
||||
override fun beforeAll(p0: ExtensionContext) {
|
||||
FirmTestBootstrap.bootstrapMinecraft()
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package moe.nea.firmament.test.testutil
|
||||
|
||||
import io.kotest.core.config.AbstractProjectConfig
|
||||
import io.kotest.core.extensions.Extension
|
||||
import moe.nea.firmament.test.FirmTestBootstrap
|
||||
|
||||
class KotestPlugin : AbstractProjectConfig() {
|
||||
override fun extensions(): List<Extension> {
|
||||
return listOf()
|
||||
}
|
||||
|
||||
override suspend fun beforeProject() {
|
||||
FirmTestBootstrap.bootstrapMinecraft()
|
||||
super.beforeProject()
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package moe.nea.firmament.test.util
|
||||
|
||||
import io.kotest.core.spec.style.AnnotationSpec
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import moe.nea.firmament.util.removeColorCodes
|
||||
|
||||
|
||||
class ColorCodeTest : AnnotationSpec() {
|
||||
class ColorCodeTest {
|
||||
@Test
|
||||
fun testWhatever() {
|
||||
Assertions.assertEquals("", "".removeColorCodes())
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
package moe.nea.firmament.test.util
|
||||
|
||||
import io.kotest.core.spec.style.AnnotationSpec
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import moe.nea.firmament.test.testutil.ItemResources
|
||||
import moe.nea.firmament.util.getLegacyFormatString
|
||||
|
||||
class TextUtilText : AnnotationSpec() {
|
||||
class TextUtilText {
|
||||
@Test
|
||||
fun testThing() {
|
||||
// TODO: add more tests that are directly validated with 1.8.9 code
|
||||
val text = ItemResources.loadText("all-chat")
|
||||
Assertions.assertEquals("§r§r§8[§r§9302§r§8] §r§6♫ §r§b[MVP§r§d+§r§b] lrg89§r§f: test§r",
|
||||
text.getLegacyFormatString())
|
||||
Assertions.assertEquals(
|
||||
"§r§r§8[§r§9302§r§8] §r§6♫ §r§b[MVP§r§d+§r§b] lrg89§r§f: test§r",
|
||||
text.getLegacyFormatString()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package moe.nea.firmament.test.util.math
|
||||
|
||||
import io.kotest.core.spec.style.AnnotationSpec
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Assertions.*
|
||||
import org.junit.jupiter.api.Test
|
||||
import moe.nea.firmament.util.math.GChainReconciliation
|
||||
import moe.nea.firmament.util.math.GChainReconciliation.rotated
|
||||
|
||||
class GChainReconciliationTest : AnnotationSpec() {
|
||||
class GChainReconciliationTest {
|
||||
|
||||
fun <T> assertEqualCycles(
|
||||
expected: List<T>,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package moe.nea.firmament.test.util.skyblock
|
||||
|
||||
import io.kotest.core.spec.style.AnnotationSpec
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
import net.minecraft.text.Text
|
||||
@@ -9,7 +9,7 @@ import moe.nea.firmament.test.testutil.ItemResources
|
||||
import moe.nea.firmament.util.skyblock.AbilityUtils
|
||||
import moe.nea.firmament.util.unformattedString
|
||||
|
||||
class AbilityUtilsTest : AnnotationSpec() {
|
||||
class AbilityUtilsTest {
|
||||
|
||||
fun List<AbilityUtils.ItemAbility>.stripDescriptions() = map {
|
||||
it.copy(descriptionLines = it.descriptionLines.map { Text.literal(it.unformattedString) })
|
||||
@@ -24,9 +24,11 @@ class AbilityUtilsTest : AnnotationSpec() {
|
||||
false,
|
||||
AbilityUtils.AbilityActivation.RIGHT_CLICK,
|
||||
null,
|
||||
listOf("Throw your pickaxe to create an",
|
||||
listOf(
|
||||
"Throw your pickaxe to create an",
|
||||
"explosion mining all ores in a 3 block",
|
||||
"radius.").map(Text::literal),
|
||||
"radius."
|
||||
).map(Text::literal),
|
||||
48.seconds
|
||||
)
|
||||
),
|
||||
@@ -43,8 +45,10 @@ class AbilityUtilsTest : AnnotationSpec() {
|
||||
true,
|
||||
AbilityUtils.AbilityActivation.RIGHT_CLICK,
|
||||
null,
|
||||
listOf("Grants +200% ⸕ Mining Speed for",
|
||||
"10s.").map(Text::literal),
|
||||
listOf(
|
||||
"Grants +200% ⸕ Mining Speed for",
|
||||
"10s."
|
||||
).map(Text::literal),
|
||||
2.minutes
|
||||
)
|
||||
),
|
||||
@@ -58,8 +62,10 @@ class AbilityUtilsTest : AnnotationSpec() {
|
||||
listOf(
|
||||
AbilityUtils.ItemAbility(
|
||||
"Instant Transmission", true, AbilityUtils.AbilityActivation.RIGHT_CLICK, 23,
|
||||
listOf("Teleport 12 blocks ahead of you and",
|
||||
"gain +50 ✦ Speed for 3 seconds.").map(Text::literal),
|
||||
listOf(
|
||||
"Teleport 12 blocks ahead of you and",
|
||||
"gain +50 ✦ Speed for 3 seconds."
|
||||
).map(Text::literal),
|
||||
null
|
||||
),
|
||||
AbilityUtils.ItemAbility(
|
||||
@@ -67,9 +73,11 @@ class AbilityUtilsTest : AnnotationSpec() {
|
||||
false,
|
||||
AbilityUtils.AbilityActivation.SNEAK_RIGHT_CLICK,
|
||||
90,
|
||||
listOf("Teleport to your targeted block up",
|
||||
listOf(
|
||||
"Teleport to your targeted block up",
|
||||
"to 61 blocks away.",
|
||||
"Soulflow Cost: 1").map(Text::literal),
|
||||
"Soulflow Cost: 1"
|
||||
).map(Text::literal),
|
||||
null
|
||||
)
|
||||
),
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package moe.nea.firmament.test.util.skyblock
|
||||
|
||||
import io.kotest.core.spec.style.ShouldSpec
|
||||
import io.kotest.matchers.shouldBe
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.DynamicTest
|
||||
import org.junit.jupiter.api.TestFactory
|
||||
import moe.nea.firmament.test.testutil.ItemResources
|
||||
import moe.nea.firmament.util.skyblock.ItemType
|
||||
|
||||
class ItemTypeTest
|
||||
: ShouldSpec(
|
||||
{
|
||||
context("ItemType.fromItemstack") {
|
||||
class ItemTypeTest {
|
||||
@TestFactory
|
||||
fun fromItemstack() =
|
||||
listOf(
|
||||
"pets/lion-item" to ItemType.PET,
|
||||
"pets/rabbit-selected" to ItemType.PET,
|
||||
@@ -17,10 +17,12 @@ class ItemTypeTest
|
||||
"titanium-drill" to ItemType.DRILL,
|
||||
"diamond-pickaxe" to ItemType.PICKAXE,
|
||||
"gemstone-gauntlet" to ItemType.GAUNTLET,
|
||||
).forEach { (name, typ) ->
|
||||
should("return $typ for $name") {
|
||||
ItemType.fromItemStack(ItemResources.loadItem(name)) shouldBe typ
|
||||
).map { (name, typ) ->
|
||||
DynamicTest.dynamicTest("return $typ for $name") {
|
||||
Assertions.assertEquals(
|
||||
typ,
|
||||
ItemType.fromItemStack(ItemResources.loadItem(name))
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package moe.nea.firmament.test.util.skyblock
|
||||
|
||||
import io.kotest.core.spec.style.AnnotationSpec
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import moe.nea.firmament.test.testutil.ItemResources
|
||||
import moe.nea.firmament.util.skyblock.SackUtil
|
||||
import moe.nea.firmament.util.skyblock.SkyBlockItems
|
||||
|
||||
class SackUtilTest : AnnotationSpec() {
|
||||
class SackUtilTest {
|
||||
@Test
|
||||
fun testOneRottenFlesh() {
|
||||
Assertions.assertEquals(
|
||||
|
||||
Reference in New Issue
Block a user