mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-20 15:26:51 +00:00
- Removed the core processResources skip that fired on test-only invocations, which packaged a core jar with no generation kernel catalog and made all 10 probe and bukkit-plugin tests that reach GenerationKernelRegistry fail on every ./gradlew test - Set maxParallelForks on :core:test to half the available processors, overridable with -PtestForks, and left the small modules single-forked so they do not re-pay the Minecraft bootstrap per fork or steal worker leases from core - Resolved B.registries() per bound platform instead of latching the first one for the JVM lifetime, keeping the previous unbound behaviour, so a test that binds its own platform no longer reads a foreign platform's block states - Resolved IrisObject.States per bound platform through accessors instead of static finals fixed at class-init, removing the NoClassDefFoundError and null material-key failures that appeared whenever class partitioning changed - Bound an explicit platform in EngineMantleCoverageTest and IrisDimensionStackActuatorMetadataTest so they no longer depend on another class leaking a binding first - Gated BukkitSpiConformanceTest registry probes on a live RegistryAccess and restored the IrisPlatforms binding it leaked, which was silently swallowing the stderr two SettingsHotloadWatchTest assertions read - Initialised org.bukkit.Registry and Biome inside the RegistryAccess mock scope in ObjectStudioGeometryTest so Mockito no longer instruments Registry mid-clinit - Replaced the SettingsHotloadWatchTest fixed 1200ms diagnostic window with a 10ms condition poll bounded at 4s - Replaced the IrisCaveCarver3DNearParityTest wall-clock speedup benchmark with a deterministic density-sample count, cutting 28 carves to 2 - Cut HydrologyPlannerTest cold-owner parity from 12 tile plans to 4 and shared the immutable baseline plan across the early-owner tests - Built one prototype project or staged history per class in the jigsaw studio and world replacement tests and copied it per test, replacing repeated fsync-bound fixture construction - Replaced Mockito block-state fixtures with concrete implementations in the object IO, deposit modifier and nearest-block-index tests, removing about 2.5 million interceptions - Replaced Thread.sleep with bounded condition polling in HydrologyTileCacheTest - Deleted 19 test classes and 60 further test methods that asserted on production .java source text rather than behaviour, and removed the 19 now-unread iris.*Source system properties that fed them
71 lines
3.1 KiB
Groovy
71 lines
3.1 KiB
Groovy
String apiVersion = providers.gradleProperty('apiVersion').get()
|
|
def mainClass = 'art.arcane.iris.Iris'
|
|
def bootstrapperClass = 'art.arcane.iris.IrisBootstrap'
|
|
|
|
String volmLibCoordinate = providers.gradleProperty('volmLibCoordinate')
|
|
.orElse('com.github.VolmitSoftware:VolmLib:master-SNAPSHOT')
|
|
.get()
|
|
|
|
dependencies {
|
|
compileOnly(project(':core'))
|
|
compileOnly(libs.lombok)
|
|
annotationProcessor(libs.lombok)
|
|
compileOnly(volmLibCoordinate) {
|
|
transitive = false
|
|
}
|
|
compileOnly(libs.paper.api)
|
|
// LogFilterSVC (constructed in Iris.enable's explicit service list) implements the
|
|
// log4j-core Filter interface, so its constructor reference needs the type resolvable.
|
|
compileOnly(libs.log4j.core)
|
|
testImplementation('junit:junit:4.13.2')
|
|
testImplementation('org.mockito:mockito-core:5.23.0')
|
|
testImplementation(libs.paper.api)
|
|
testImplementation(libs.bstats)
|
|
testImplementation(project(':core'))
|
|
testImplementation(volmLibCoordinate) {
|
|
transitive = false
|
|
}
|
|
compileOnly(libs.placeholderApi)
|
|
testImplementation(libs.placeholderApi) {
|
|
transitive = false
|
|
}
|
|
}
|
|
|
|
tasks.named('processResources').configure {
|
|
def pluginProperties = [
|
|
name : rootProject.name,
|
|
version : rootProject.version,
|
|
apiVersion: apiVersion,
|
|
main : mainClass,
|
|
bootstrapper: bootstrapperClass,
|
|
]
|
|
inputs.properties(pluginProperties)
|
|
filesMatching(['**/paper-plugin.yml', '**/plugin.yml']) {
|
|
expand(pluginProperties)
|
|
}
|
|
}
|
|
|
|
tasks.named('compileJava', JavaCompile).configure {
|
|
// lombok.config decides how equals/hashCode/toString are generated (fields, never getters), so editing it
|
|
// changes this module's bytecode. Gradle does not know that on its own and would serve a stale up-to-date
|
|
// build until something else in the module changed.
|
|
inputs.file(rootProject.file('lombok.config'))
|
|
.withPropertyName('lombokConfig')
|
|
.withPathSensitivity(PathSensitivity.NONE)
|
|
}
|
|
|
|
tasks.named('jar', Jar).configure {
|
|
archiveBaseName.set('iris-bukkit-plugin')
|
|
}
|
|
|
|
tasks.named('test').configure {
|
|
systemProperty('iris.pregeneratorJobSource', rootProject.file('core/src/main/java/art/arcane/iris/core/gui/PregeneratorJob.java').absolutePath)
|
|
systemProperty('iris.bukkitEnginePlatformHooksSource', file('src/main/java/art/arcane/iris/core/runtime/BukkitEnginePlatformHooks.java').absolutePath)
|
|
systemProperty('iris.engineSvcSource', file('src/main/java/art/arcane/iris/core/service/IrisEngineSVC.java').absolutePath)
|
|
systemProperty('iris.terrainSvcSource', file('src/main/java/art/arcane/iris/core/service/IrisTerrainSVC.java').absolutePath)
|
|
systemProperty('iris.apiEventSvcSource', file('src/main/java/art/arcane/iris/core/service/IrisApiEventSVC.java').absolutePath)
|
|
systemProperty('iris.worldInfoFactorySource', file('src/main/java/art/arcane/iris/core/service/terrain/IrisWorldInfoFactory.java').absolutePath)
|
|
systemProperty('iris.startupSource', file('src/main/java/art/arcane/iris/Iris.java').absolutePath)
|
|
systemProperty('iris.readmeSource', rootProject.file('README.md').absolutePath)
|
|
}
|