Reusable cross-target behavior contract comparison for MoonBit programs.
node scripts/check_backends.mjsmoon run --target wasm cmd/probe
moon run --target wasm-gc cmd/probe
moon run --target js cmd/probe
moon run --target native cmd/probe$env:MOON_PARITY_TARGETS = 'wasm,wasm-gc,js'
node scripts/check_backends.mjsnode scripts/check_backends.mjs examples/portable-json.json$env:MOON_PARITY_FORMAT = 'html'
node scripts/check_backends.mjs examples/portable-json.json > _build/target-parity.htmlnode scripts/compare_file.mjs examples/synthetic-divergence.jsonlet run : @parity.ScenarioRun = {
schema_version: 1,
name: "portable-json",
expected_targets: ["wasm", "js", "native"],
observations: [
{ target: "wasm", exit_code: 0, stdout: "{\"ok\":true}\n", stderr: "" },
{ target: "js", exit_code: 0, stdout: "{\"ok\":true}\n", stderr: "" },
{ target: "native", exit_code: 0, stdout: "{\"ok\":true}\n", stderr: "" },
],
policy: @parity.ComparePolicy::strict(),
}
let report = @parity.compare_scenario(run)
println(@parity.report_to_markdown(report))let contract : @parity.ContractScenario = {
scenario: run,
expectations: [
{ target: "wasm", exit_code: 0, stdout: "{\"ok\":true}\n", stderr: "" },
{ target: "js", exit_code: 0, stdout: "{\"ok\":true}\n", stderr: "" },
{ target: "native", exit_code: 0, stdout: "{\"ok\":true}\n", stderr: "" },
],
}
let report = @parity.compare_contract_scenario(contract)
println(@parity.report_to_markdown(report))moon add zhangbowen2006/moonbit-target-parity@0.3.0import {
"zhangbowen2006/moonbit-target-parity" @parity,
}moon test --deny-warn
node scripts/test_cli.mjs
node scripts/check_backends.mjsmoon check --target all --deny-warn
moon build --target all
moon test --target all --deny-warn
moon fmt --check
moon info
node scripts/test_cli.mjs
node scripts/check_backends.mjs
moon package --listpub(all) struct ContractScenario {
scenario : ScenarioRun
expectations : Array[Observation]
} derive(ToJson, FromJson)pub(all) struct FieldDifference {
target : String
kind : String
field : String
path : String?
reference : String
observed : String
} derive(ToJson)pub(all) struct ScenarioRun {
schema_version : Int
name : String
expected_targets : Array[String]
observations : Array[Observation]
policy : ComparePolicy
} derive(ToJson, FromJson)pub(all) struct SuiteReport {
status : Status
scenario_count : Int
passed : Int
divergent : Int
inconclusive : Int
reports : Array[ParityReport]
}fn unified_text_diff(expected : String, observed : String) -> StringInstall
Download zipReusable cross-target behavior contract comparison for MoonBit programs.