Skip to content

Roadmap

Done — the deterministic core

  • [x] Assertions — every assert_*/refute_*, flunk/skip/pass, with byte-exact failure messages, mu_pp/mu_pp_for_diff, the custom-message prepend and the assertion counter.
  • [x] Block assertionsassert_raises, assert_throws, assert_output, assert_silent (the block runs on the host; the library classifies the outcome and formats the message).
  • [x] Run lifecycleTest#run with the setup+body / per-teardown capture_exceptions protocol and passthrough handling.
  • [x] Result — codes, predicates, location, to_s, and the Assertion/Skip/UnexpectedError model.
  • [x] Spec DSLdescribe/it/before/after, it-name morphing, let validation, spec_type, and the must_*/wont_* mapping table.
  • [x] Mock / Stubexpect/verify/call dispatch and singleton stubbing, with exact error wording.
  • [x] Differential gem oracle + 100% coverage, gofmt/go vet clean, CI green on the six 64-bit Go arches and three OSes.
  • [x] Cross-runtime performance benchmark — see Performance.

Downstream by design (the host's job)

  • [ ] Ruby evaluation — running test method bodies and assertion blocks, and the value-level operations an assertion compares (#==, #=~, #inspect, #include?, #respond_to?, …). These need a Ruby interpreter and are supplied through the Runtime seam by the consumer (rbgo). This library never evaluates Ruby.
  • [ ] rbgo binding — wiring the seam over go-embedded-ruby's object graph so real Minitest suites run on a pure-Go Ruby. Tracked in the go-embedded-ruby consumer, not here.

Possible future work

  • [ ] Reporters / runner CLI surface (progress dots, summary, Minitest::Reporter) — only the parts that are deterministic and interpreter-independent would live here.
  • [ ] Additional 5.x edge assertions as downstream suites exercise them, each landing with an oracle case.