Development Guide¶
This guide targets contributors and maintainers. For a system-level view, see architecture. For core internals, see the core module.
Project structure¶
This repository is a Gradle composite build with these key modules:
model: shared data types (TestCase,TestSuite, error types).example-value: schema-derived example value generation (SPI + built-ins).core: test generation engine (providers, rules, generators).generator-template: Mustache-based code generator.pattern-value: regex-based value generation (no core dependency).pattern-support: pattern integration module (rule + provider + settings).distribution-bundle: default wiring for CLI and Gradle plugin.plugin: Gradle plugin for build integration.cli: command-line interface (JVM and native).samples: runnable example projects.
Build and test¶
Common commands:
./gradlew check
./gradlew :core:test
./gradlew :plugin:test
./gradlew :cli:test
./gradlew detekt
./gradlew apiCheck
CLI distribution builds:
./gradlew :cli:installDist
./gradlew :cli:shadowJar
./gradlew :cli:nativeCompile
Working on generators, rules, and providers¶
- Rules: implement
SimpleSchemaValidationRuleorAuthValidationRuleand register viaTestGenerationModule(see SPI and rules catalog). - Providers: implement
TestCaseProvider<T>and wire via a customTestSuiteGeneratororTestGeneratorConfigurer(see providers catalog). - Generators: implement
ArtifactGeneratorFactoryand register via a module (see generators docs).
When generator output changes, update snapshot fixtures under core/src/test/resources and run
module tests.
Configuration defaults¶
If you add module settings or change defaults, update:
DistributionDefaultsindistribution-bundle- Documentation in
docs/(index and affected module docs)
Native image considerations¶
The CLI native image configuration is maintained under cli/src/main/resources/META-INF/native-image/.
After adding dependencies that rely on reflection or resources, regenerate configs:
./gradlew :cli:regenerateNativeImageConfig
See the CLI reference for details.
Documentation maintenance¶
- Keep docs/index.md in sync with new or renamed docs.
- Ensure cross-links remain valid and reflect module boundaries.
- When adding new extension points, update SPI docs.