Integrate official Basic output tests

Merged
HA
1mo ago
+664-4

Summary

This PR integrates the official JSON Schema Draft 2020-12 Basic output test suite into Blaze and fixes an annotation value shaping issue in Standard Basic output.

Changes

  1. Unmask Official Output Tests:
    • Updated vendor/jsonschema-test-suite.mask to unmask output-tests/draft2020-12/ (escape.json, general.json, readOnly.json, type.json, and output-schema.json), while keeping other drafts and formats masked.
  2. Preserve Annotation Shapes:
    • Added is_array_aggregated_keyword() helper in src/output/output_standard.cc and ports/javascript/index.mjs.
    • Collection/aggregation keywords (properties, patternProperties, additionalProperties, unevaluatedProperties, contains) continue to emit array annotations (unknown[]).
    • Scalar / metadata keywords (readOnly, title, description, default, etc.) now emit their scalar / JSON value shape (annotation.second.back()) rather than wrapping them into arrays.
  3. Official Test Suite Runner:
    • Added test/output/output_official_draft2020_12_suite.cc registered in test/output/CMakeLists.txt to execute all official Draft 2020-12 content output tests against output-schema.json.
  4. TypeScript Definitions & JavaScript Port:
    • Updated StandardOutputAnnotationEntry.annotation type from unknown[] to unknown in ports/javascript/index.d.mts.
    • Updated SimpleOutput.toBasic in ports/javascript/index.mjs to match the C++ output shaping.
  5. Fixtures & Cleanups:
    • Updated test/output/output_standard_basic.json for scalar title annotations.
    • Removed the resolved TODO for official output tests in src/output/include/sourcemeta/blaze/output_standard.h while keeping Detailed/Verbose TODOs.

Verification

  • Official Draft 2020-12 Output Suite: 4/4 passed (100%)
  • Local Basic & Flag Output Suites: 58/58 passed, 28/28 passed
  • Output Unit Suite: 673/673 passed
  • Evaluator Annotation & Trace Suites: 6/6 passed
  • JavaScript Output Tests: Passed