Skip to content

Phase 1: core HTTP domain model — tests - #41

Merged
Wahbeh-Mohammad merged 4 commits into
mainfrom
8-phase-1-core-http-domain-model-tests
Sep 15, 2026
Merged

Wahbeh-Mohammad merged 4 commits into
mainfrom
8-phase-1-core-http-domain-model-tests

Conversation

@Wahbeh-Mohammad

@Wahbeh-Mohammad Wahbeh-Mohammad commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Part of #8. Second of three phase 1 PRs — the tests for #40. Targets that PR's branch; the phase record is #42.

What lands

gems/dexpace-core/test/** mirroring lib/ one file per file — 26 files, +2,453: one suite per model plus nested BuildTest/IsolationTest/ParseTest classes where a suite outgrew Metrics/ClassLength, every class inheriting DexpaceTestCase (warnings fatal, #sample(count:, seed:) for the bounded property tests: Status totality over 256 samples, PercentEncoding over 128 byte samples including invalid UTF-8, the MediaType round-trip). Every file's header comment names the requirement IDs it exercises. Also the gate pins for #40's four gate/tool corrections: test/fixtures/gates/rbs_surface/…/core_superclasses.rbs, and cases in test/gates/rbs_surface_test.rb and test/gates/surface_snapshot_test.rb, each verified red under the old behaviour.

Nothing outside gems/dexpace-core/test/ and those three gate-test paths changes here.

Verification

  • bundle exec rake on Ruby 4.0.6 at this tip: exit 0, all seventeen gates green — test:gems 273 runs / 1,956 assertions, line coverage 789/789 (100.00%); test:gates 128 runs / 523 assertions.
  • Ruby 3.2.11 (Bundler 2.4.19, fresh lock): test:gems 273 runs, 0 failures, 100% — the floor where Data#with does not call an initialize override, so Model#with's route through .build is proven rather than assumed; the matrix gate set (gemspec_audit, require_allowlist, clean_bundle, single_instance) green.
  • The reviewer re-ran everything itself and additionally probed the construction pattern and the HTTP rules by hand on both interpreters (see Phase 1: core HTTP domain model — the wire model #40).

Known follow-up from the final review (not blocking)

The three follow-ups listed on #40 each want a pinning test here once fixed: a default_proc Hash through Headers.build/RequestOptions.build, a non-String through the HeaderSyntax predicates, and Query.parse with a raw trailing NUL.

@Wahbeh-Mohammad Wahbeh-Mohammad added this to the v1/mvp milestone Sep 15, 2026
@Wahbeh-Mohammad Wahbeh-Mohammad added type:test Tests only area:core Core HTTP, IO, body, context, encoding: HTTP-* IO-* BODY-* CTX-* UTF-* labels Sep 15, 2026
@Wahbeh-Mohammad
Wahbeh-Mohammad added this pull request to stack #43 September 15, 2026 09:06
Base automatically changed from 8-phase-1-core-http-domain-model to main September 15, 2026 09:08
Twenty-two suites under gems/dexpace-core/test/, one per lib file, each
headed by the requirement IDs it exercises: construction, derivation,
validation, encoding and equality for every type, the HTTP-5 two-tier
accessor contract, the HTTP-2 gap asserted rather than papered over, the
bounded property tests for every parser and codec, and the with
re-validation case that only the 3.2.11 floor can fail. The smoke suite
gains the entry-point checks. Two pins for the gate corrections on the
code branch: a Data / ArgumentError / StringScanner fixture for
gates:rbs_surface, and a privatised-reader fixture for the surface
walker.
…pyable collection, and Query.parse on a non-String
…ateful-encoding tag, a non-real timeout and a non-Hash with
@Wahbeh-Mohammad
Wahbeh-Mohammad force-pushed the 8-phase-1-core-http-domain-model-tests branch from 49c00b5 to ca58521 Compare September 15, 2026 09:08
@Wahbeh-Mohammad
Wahbeh-Mohammad merged commit be42978 into main Sep 15, 2026
5 checks passed
@Wahbeh-Mohammad
Wahbeh-Mohammad deleted the 8-phase-1-core-http-domain-model-tests branch September 15, 2026 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:core Core HTTP, IO, body, context, encoding: HTTP-* IO-* BODY-* CTX-* UTF-* type:test Tests only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant