MoonSeal checks whether a MoonBit project has enough tests to be treated as
ready for release. It scans packages, source files, blackbox tests, whitebox
tests, public interface files, and simple mutation targets, then reports a
quality gate result.
The first version is intentionally small. It does not rewrite source files or
run test suites by itself. Instead, it gives maintainers a stable report they
can read in CI or before a release.
Features
Discover MoonBit packages from moon.pkg.
Classify source files, _test.mbt files, and _wbtest.mbt files.
Count public API declarations from pkg.generated.mbti.
Report packages that contain source files but no tests.
Build a mutation candidate list for boolean, comparison, integer, and logical
operator changes.
Run a default release gate for test count, package-level tests, README,
license, and CI workflow presence.
Quick Start
MoonSeal uses the MoonBit JavaScript backend for filesystem access:
moon test --target js
moon run --target js cmd/main -- scan fixtures/well_tested
moon run --target js cmd/main -- gate fixtures/well_tested
moon run --target js cmd/main -- mutants fixtures/mutation_targets
LL1266/moonseal
MoonSeal checks whether a MoonBit project has enough tests to be treated as ready for release. It scans packages, source files, blackbox tests, whitebox tests, public interface files, and simple mutation targets, then reports a quality gate result.
The first version is intentionally small. It does not rewrite source files or run test suites by itself. Instead, it gives maintainers a stable report they can read in CI or before a release.
Features
moon.pkg._test.mbtfiles, and_wbtest.mbtfiles.pkg.generated.mbti.Quick Start
MoonSeal uses the MoonBit JavaScript backend for filesystem access:
Public API
analyze_project(path : String) -> Result[QualityReport, SealError]evaluate_gate(report : QualityReport, policy : GatePolicy) -> GateResultmutation_plan(report : QualityReport) -> Array[MutationCandidate]render_report(report : QualityReport) -> Stringrender_gate(result : GateResult) -> Stringsummarize(report : QualityReport) -> Stringformat_error(err : SealError) -> StringProject Materials
docs/competition/proposal.mddocs/competition/MoonSeal项目申报书.pdfdocs/competition/MoonSeal项目申报书.docxdocs/architecture.mddocs/acceptance-checklist.mddocs/submission-guide.mdLicense
Apache-2.0