Skip to content

Commit

Permalink
Improve and test FabricLikeApiExtension.
Browse files Browse the repository at this point in the history
  • Loading branch information
thecatcore committed Aug 7, 2024
1 parent 2be5289 commit 7453b7f
Show file tree
Hide file tree
Showing 3 changed files with 149 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,25 +26,28 @@ open class FabricLikeApiExtension(val project: Project) {

abstract fun getUrl(version: String): String
abstract fun full(version: String): String
abstract fun getArtifactName(moduleName: String, version: String?): String

open fun module(moduleName: String, version: String): String? {
val elements = xmlDoc[version].getElementsByTagName("dependency")
for (i in 0 until elements.length) {
val element = elements.item(i)
var correct = false
var group: String? = null
var vers: String? = null
for (j in 0 until element.childNodes.length) {
val child = element.childNodes.item(j)
if (child.nodeName == "artifactId" && child.textContent == moduleName) {
correct = true
}
if (child.nodeName == "groupId") {
group = child.textContent
}
if (child.nodeName == "version") {
vers = child.textContent
}
}
if (correct) {
return getArtifactName(moduleName, vers)
return "$group:$moduleName:$vers"
}
}
return null
Expand All @@ -60,42 +63,6 @@ open class FabricLikeApiExtension(val project: Project) {
override fun full(version: String): String {
return "net.modificationstation:StationAPI:$version"
}

override fun getArtifactName(moduleName: String, version: String?): String {
TODO("Not yet implemented")
}

fun getArtifactName(moduleName: String, mainVersion: String, version: String?): String {
return "net.modificationstation.StationAPI.$mainVersion:$moduleName:$version"
}

override fun module(moduleName: String, version: String): String? {
val elements = xmlDoc[version].getElementsByTagName("dependency")

for (i in 0 until elements.length) {
val element = elements.item(i)
var correct = false
var vers: String? = null

for (j in 0 until element.childNodes.length) {
val child = element.childNodes.item(j)

if (child.nodeName == "artifactId" && child.textContent == moduleName) {
correct = true
}

if (child.nodeName == "version") {
vers = child.textContent
}
}

if (correct) {
return getArtifactName(moduleName, version, vers)
}
}

return null
}
}

val locations = mapOf<String, APILocations>(
Expand All @@ -107,10 +74,6 @@ open class FabricLikeApiExtension(val project: Project) {
override fun full(version: String): String {
return "net.fabricmc.fabric-api:fabric-api:$version"
}

override fun getArtifactName(moduleName: String, version: String?): String {
return "net.fabricmc.fabric-api:$moduleName:$version"
}
},
"legacyFabric" to object : APILocations(project) {
override fun getUrl(version: String): String {
Expand All @@ -120,10 +83,6 @@ open class FabricLikeApiExtension(val project: Project) {
override fun full(version: String): String {
return "net.legacyfabric.legacy-fabric-api:legacy-fabric-api:$version"
}

override fun getArtifactName(moduleName: String, version: String?): String {
return "net.legacyfabric.legacy-fabric-api:$moduleName:$version"
}
},
"quilt" to object : APILocations(project) {
override fun getUrl(version: String): String {
Expand All @@ -133,10 +92,6 @@ open class FabricLikeApiExtension(val project: Project) {
override fun full(version: String): String {
return "org.quiltmc.quilted-fabric-api:quilted-fabric-api:$version"
}

override fun getArtifactName(moduleName: String, version: String?): String {
return "org.quiltmc.quilted-fabric-api:$moduleName:$version"
}
},
"qsl" to object : APILocations(project) {
override fun getUrl(version: String): String {
Expand All @@ -146,10 +101,6 @@ open class FabricLikeApiExtension(val project: Project) {
override fun full(version: String): String {
return "org.quiltmc:qsl:$version"
}

override fun getArtifactName(moduleName: String, version: String?): String {
return "org.quiltmc.qsl:$moduleName:$version"
}
},
"station_snapshots" to object : StAPILocation(project, "snapshots") {},
"station_releases" to object : StAPILocation(project, "releases") {}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
package xyz.wagyourtail.unimined.test.integration

import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.CsvSource
import xyz.wagyourtail.unimined.api.minecraft.patch.fabric.FabricLikeApiExtension
import xyz.wagyourtail.unimined.util.createFakeProject
import kotlin.test.assertEquals

class FabricLikeApiExtensionTest {
companion object {
lateinit var extension: FabricLikeApiExtension

@JvmStatic
@BeforeAll
fun init() {
extension = FabricLikeApiExtension(createFakeProject())
}
}

@ParameterizedTest(name = "fabric API full {0}")
@CsvSource(
"0.100.8+1.21",
"0.42.0+1.16",
"0.28.5+1.14"
)
fun fabricFull(version: String) {
val result = extension.fabric(version)
assertEquals("net.fabricmc.fabric-api:fabric-api:$version", result)
}

@ParameterizedTest(name = "fabric API {0} module {1}")
@CsvSource(
"0.100.8+1.21, fabric-command-api-v2, 2.2.28+6ced4dd9d1",
"0.42.0+1.16, fabric-entity-events-v1, 1.2.4+3cc0f0907d",
"0.28.5+1.14, fabric-events-lifecycle-v0, 0.2.1+4ea4772942"
)
fun fabricModule(apiVersion: String, module: String, moduleVersion: String) {
val result = extension.fabricModule(module, apiVersion)
assertEquals("net.fabricmc.fabric-api:$module:$moduleVersion", result)
}

@ParameterizedTest(name = "quilted fabric API full {0}")
@CsvSource(
"11.0.0-alpha.3+0.100.7-1.21",
"6.0.0-beta.11+0.87.0-1.19.4",
"1.0.0-beta.28+0.67.0-1.18.2"
)
fun quiltFabricFull(version: String) {
val result = extension.quiltFabric(version)
assertEquals("org.quiltmc.quilted-fabric-api:quilted-fabric-api:$version", result)
}

@ParameterizedTest(name = "quilted fabric API {0} module {2}")
@CsvSource(
"11.0.0-alpha.3+0.100.7-1.21, quilted-fabric-api, fabric-data-attachment-api-v1, 11.0.0-alpha.3+0.100.7-1.21",
"6.0.0-beta.11+0.87.0-1.19.4, quilted-fabric-api, fabric-item-api-v1, 6.0.0-beta.11+0.87.0-1.19.4",
"6.0.0-beta.11+0.87.0-1.19.4, qsl.block, block_extensions, 5.0.0-beta.11+1.19.4",
"1.0.0-beta.28+0.67.0-1.18.2, quilted-fabric-api, fabric-convention-tags-v1, 1.0.0-beta.28+0.67.0-1.18.2",
"1.0.0-beta.28+0.67.0-1.18.2, qsl.core, resource_loader, 1.1.0-beta.26+1.18.2"
)
fun quiltFabricModule(apiVersion: String, moduleParent: String, module: String, moduleVersion: String) {
val result = extension.quiltFabricModule(module, apiVersion)
assertEquals("org.quiltmc.$moduleParent:$module:$moduleVersion", result)
}

@ParameterizedTest(name = "qsl full {0}")
@CsvSource(
"10.0.0-alpha.1+1.21",
"5.0.0-beta.11+1.19.4",
"1.1.0-beta.26+1.18.2"
)
fun qslFull(version: String) {
val result = extension.qsl(version)
assertEquals("org.quiltmc:qsl:$version", result)
}

@ParameterizedTest(name = "qsl {0} module {1}")
@CsvSource(
"10.0.0-alpha.1+1.21, block, 10.0.0-alpha.1+1.21",
"5.0.0-beta.11+1.19.4, item, 5.0.0-beta.11+1.19.4",
"5.0.0-beta.11+1.19.4, rendering, 5.0.0-beta.11+1.19.4",
"1.1.0-beta.26+1.18.2, data, 1.1.0-beta.26+1.18.2",
"1.1.0-beta.26+1.18.2, misc, 1.1.0-beta.26+1.18.2"
)
fun qslModule(apiVersion: String, module: String, moduleVersion: String) {
val result = extension.qslModule(module, apiVersion)
assertEquals("org.quiltmc.qsl:$module:$moduleVersion", result)
}

@ParameterizedTest(name = "LFAPI full {0}")
@CsvSource(
"1.10.2+1.6.4",
"1.7.1+1.12.2",
"1.0.0+1.8.9"
)
fun legacyFabricFull(version: String) {
val result = extension.legacyFabric(version)
assertEquals("net.legacyfabric.legacy-fabric-api:legacy-fabric-api:$version", result)
}

@ParameterizedTest(name = "LFAPI {0} module {1}")
@CsvSource(
"1.10.2+1.6.4, legacy-fabric-keybindings-api-v1, 1.1.1+1.6.4+281301eab14f",
"1.7.1+1.12.2, legacy-fabric-item-groups-v1, 2.0.0+1.12.2+ae4aa0d052",
"1.0.0+1.8.9, legacy-fabric-lifecycle-events-v1, 1.0.0+uncommited"
)
fun legacyFabricModule(apiVersion: String, module: String, moduleVersion: String) {
val result = extension.legacyFabricModule(module, apiVersion)
assertEquals("net.legacyfabric.legacy-fabric-api:$module:$moduleVersion", result)
}

@ParameterizedTest(name = "StationAPI full {0}")
@CsvSource(
"2.0-alpha.2.1, releases",
"2.0-alpha.1, releases",
"6143ce4, snapshots",
"2988528, snapshots"
)
fun stationFull(version: String, branch: String) {
val result = extension.station(branch, version)
assertEquals("net.modificationstation:StationAPI:$version", result)
}

@ParameterizedTest(name = "StationAPI {0} module {3}")
@CsvSource(
"2.0-alpha.2.1, releases, submodule.station-maths-v0, station-maths-v0, 2.0-alpha.2.1-1.0.0",
"2.0-alpha.1, releases, 2.0-alpha.1, station-blockitems-v0, 2.0-alpha.1-1.0.0",
"6143ce4, snapshots, 6143ce4, station-lifecycle-events-v0, 2.0-PRE2-1.0.0",
"2988528, snapshots, 2988528, station-dimensions-v0, 2.0-PRE2-1.0.0"
)
fun stationModule(apiVersion: String, branch: String, moduleParent: String, module: String, moduleVersion: String) {
val result = extension.stationModule(branch, module, apiVersion)
assertEquals("net.modificationstation.StationAPI.$moduleParent:$module:$moduleVersion", result)
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package xyz.wagyourtail.unimined.util

import org.gradle.api.Project
import org.gradle.testfixtures.ProjectBuilder
import org.gradle.testkit.runner.BuildResult
import org.gradle.testkit.runner.GradleRunner
import org.gradle.util.GradleVersion
Expand Down Expand Up @@ -70,4 +72,10 @@ fun runGradle(dir: Path, version: String = GRADLE_CURRENT): BuildResult {
}
}
return result
}

fun createFakeProject(): Project {
val project = ProjectBuilder.builder().build()
project.getPluginManager().apply("xyz.wagyourtail.unimined")
return project
}

0 comments on commit 7453b7f

Please sign in to comment.