corvus-test-suite-regeneration

star 189

Regenerate JSON Schema test classes from the JSON-Schema-Test-Suite git submodule. Covers the update-json-schema-test-suite.ps1 master script, the V5 test generator (Corvus.JsonSchemaTestSuite.CodeGenerator), exclusion configuration, and output directory structure. USE FOR: updating the test suite submodule, regenerating test classes after submodule or generator changes, understanding the test infrastructure. DO NOT USE FOR: running existing tests (use corvus-build-and-test), writing manual tests.

corvus-dotnet By corvus-dotnet schedule Updated 6/7/2026

name: corvus-test-suite-regeneration description: > Regenerate JSON Schema test classes from the JSON-Schema-Test-Suite git submodule. Covers the update-json-schema-test-suite.ps1 master script, the V5 test generator (Corvus.JsonSchemaTestSuite.CodeGenerator), exclusion configuration, and output directory structure. USE FOR: updating the test suite submodule, regenerating test classes after submodule or generator changes, understanding the test infrastructure. DO NOT USE FOR: running existing tests (use corvus-build-and-test), writing manual tests.

Test Suite Regeneration

Master Script

.\update-json-schema-test-suite.ps1

This handles the full workflow:

  1. Updates the JSON-Schema-Test-Suite git submodule
  2. Regenerates V5 test classes (3 output directories)

V5 Test Generator

The Corvus.JsonSchemaTestSuite.CodeGenerator project generates test classes for 3 suites, output into two test projects:

Output subdirectory Purpose
tests/Corvus.Text.Json.SchemaTestSuite.Tests/JsonSchemaTestSuite/ Full type-based validation tests
tests/Corvus.Text.Json.EvaluatorTestSuite.Tests/StandaloneEvaluatorTestSuite/ Evaluator-only tests
tests/Corvus.Text.Json.EvaluatorTestSuite.Tests/AnnotationTestSuite/ Annotation collection tests

The output paths are configured in the generator's appsettings.json (outputPath, evaluatorOutputPath, annotationOutputPath). The emitted fixtures are OS-independent (embedded paths use /, embedded JSON uses LF), so regeneration is byte-stable across operating systems.

CRITICAL: The V5 generator must be run from its bin/ directory, not via dotnet run, because appsettings.json uses relative paths that resolve from the working directory.

# Build the generator
dotnet build tests\Corvus.JsonSchemaTestSuite.CodeGenerator -c Release

# Run from bin directory (use `dotnet <dll>` so it works on every OS;
# the apphost is `.exe` on Windows only)
Push-Location tests\Corvus.JsonSchemaTestSuite.CodeGenerator\bin\Release\net10.0
dotnet .\Corvus.JsonSchemaTestSuite.CodeGenerator.dll > $null
Pop-Location

Redirect stdout to $null to avoid PowerShell buffer overflow.

V4 Tests

V4 schema validation tests are in tests-v4/Corvus.Json.Specs.Tests/ as MSTest tests. These test V4 types (Corvus.Json.ExtendedTypes, Corvus.Json.CodeGeneration.CSharp) using runtime Roslyn compilation via JsonSchemaBuilderDriver. The test classes were generated from the same JSON-Schema-Test-Suite data and cover all drafts (4, 6, 7, 2019-09, 2020-12) plus OpenAPI 3.0.

V4 tests are NOT regenerated by the master script — they are static MSTest test classes.

Critical Rules

  1. Always delete old generated files before regenerating. The generators only create files — they never delete files that are no longer selected by exclusion rules. Stale files cause compilation errors or false test passes.

  2. Run from the correct working directory. The V5 generator uses relative paths from appsettings.json.

Exclusion Configuration

Test exclusions (for known spec failures or draft-specific skips) are configured in appsettings.json in the V5 generator project.

Cross-References

  • For running the generated tests, see corvus-build-and-test
  • For the JSON Schema keyword system, see corvus-keywords-and-validation
  • Full guide: docs/RunningTests.md
Install via CLI
npx skills add https://github.com/corvus-dotnet/Corvus.JsonSchema --skill corvus-test-suite-regeneration
Repository Details
star Stars 189
call_split Forks 21
navigation Branch main
article Path SKILL.md
More from Creator
corvus-dotnet
corvus-dotnet Explore all skills →