This document outlines the comprehensive test coverage improvements made to the ModStitch gradle plugin.
The ModStitch gradle plugin provides a unified API for building Minecraft mods across different mod loaders (Fabric Loom, NeoForge MDG, and legacy Forge MDG). This test suite ensures comprehensive coverage of all major features across all three platforms.
- Platform Detection: Tests for Loom, MDG, and MDGLegacy platform identification
- Configuration Management: Tests for minecraft version, mod loader version, and java version configuration
- Auto Java Version Detection: Tests automatic Java version selection based on Minecraft version
- Minecraft version configuration across all platforms
- Mod loader version configuration (Fabric Loader, NeoForge, Forge)
- Java version auto-detection for different Minecraft versions (Java 8, 16, 17, 21)
- Manual Java version override capability
- Platform detection utilities validation
- Metadata block configuration (mod ID, name, version, description, authors, license)
- Platform-specific manifest generation:
- Fabric:
fabric.mod.json - NeoForge:
META-INF/neoforge.mods.toml - Forge Legacy:
META-INF/mods.toml
- Fabric:
- Template processing and variable substitution
- Metadata validation with required fields
- Mixin config registration and setup
- Multiple mixin configurations support
- Environment-specific mixin configs (client/server)
- Mixin config JSON generation and inclusion in JARs
- Mixin annotation processor setup
- Parchment mappings configuration for parameter names
- Custom version specification
- Auto minecraft version inheritance
- Parchment disabled/optional scenarios
- Default run configurations for each platform
- Custom run configuration creation
- Multiple run configurations (client, server, data generation)
- Environment variables configuration
- Program arguments setup
- Cross-platform access widener/transformer support
- Automatic format conversion (AW v1 → AW v2 for Fabric, AW → AT for NeoForge)
- File detection in project hierarchy
- Inclusion in built JARs
- Proxy configuration creation for abstracting platform differences
- Source set proxy configurations
- Mod vs non-mod dependency handling
- Test source set proxy configurations
- Dependency resolution validation
- Comprehensive JAR structure validation for each platform
- Manifest validation and version information
- Mixin config inclusion in JARs
- Access widener/transformer inclusion
- Mod manifest files validation
- Complete project build validation
- Publishing extension setup and configuration
- Shadow extension setup and shadow JAR creation
- Multi-platform publishing support
- Final jar task configuration
- Named jar task configuration
- Unit testing setup with Minecraft sources
- Custom JUnit platform configuration
- Test execution validation
- Test class compilation verification
Each test is duplicated across all three supported platforms:
- Tests tagged with
@Tag("loom") - Uses Fabric Loader and
fabric.mod.json - Access Widener v2 format
- Fabric-specific run configurations
- Tests tagged with
@Tag("mdg") - Uses NeoForge and
META-INF/neoforge.mods.toml - Access Transformer format
- NeoForge-specific configurations
- Tests tagged with
@Tag("mdgl") - Uses legacy Forge and
META-INF/mods.toml - Access Transformer format
- Legacy Forge-specific configurations
- Uses
JarFileto inspect built JAR contents - Validates presence of required files (manifests, access wideners, mixin configs)
- Checks file content and structure
- Verifies template processing results
- Tests property configuration through Gradle TestKit
- Validates auto-detection and inheritance behavior
- Checks cross-platform compatibility
- Verifies task creation and configuration
- Tests task execution and outcomes
- Validates task dependencies and ordering
# Run only Loom tests
./gradlew test --tests "*" -Dtest.include.tags=loom
# Run only MDG tests
./gradlew test --tests "*" -Dtest.include.tags=mdg
# Run only MDG Legacy tests
./gradlew test --tests "*" -Dtest.include.tags=mdgl# Run core configuration tests
./gradlew test --tests "*CoreConfigurationTests*"
# Run JAR inspection tests
./gradlew test --tests "*JarInspectionTests*"
# Run mixin configuration tests
./gradlew test --tests "*MixinConfigurationTests*"# Exclude MDG Legacy tests (as they require special setup)
./gradlew test -Dtest.exclude.tags=mdglThe enhanced test suite provides coverage for:
- ✅ Core Configuration: 100% coverage of main ModStitch extension properties
- ✅ Platform Detection: All three platforms (Loom, MDG, MDGLegacy)
- ✅ Metadata Management: Complete metadata block and template processing
- ✅ Mixin Integration: Full mixin configuration and setup
- ✅ Access Widener/Transformer: Cross-platform file handling
- ✅ Run Configurations: All run configuration features
- ✅ Dependency Management: Proxy configurations and mod vs non-mod handling
- ✅ JAR Validation: Built artifact inspection and validation
- ✅ Extension Integration: Publishing and shadow extensions
- ✅ Unit Testing: ModStitch unit testing functionality
- Comprehensive Coverage: Tests all major features across all platforms
- Platform Parity: Ensures consistent behavior across Loom, MDG, and MDGLegacy
- JAR Validation: Validates that built artifacts are correctly structured
- Regression Prevention: Catches breaking changes in any platform implementation
- Documentation: Tests serve as living documentation of plugin behavior
- Quality Assurance: Ensures ModStitch maintains high quality across releases
This test suite significantly improves the reliability and maintainability of the ModStitch gradle plugin while ensuring consistent behavior across all supported Minecraft mod development platforms.