37c56322
json: enable conformance JSON output + close 459 tests
Three coupled changes that turn the JSON output path on for the
conformance harness:
1. string_to_int64 accepts cdata: Tarantool's json.decode parses raw
JSON integer literals outside double range as int64_t/uint64_t cdata,
not Lua numbers. The decoder errored "expected JSON string or number
for int64" on any unquoted 64-bit value (Int64FieldMaxValueNotQuoted
et al). cdata is now cast through directly, preserving precision.
2. encode_message marks output as a map: an empty proto3 message
serialized as `[]` because Tarantool's json defaults empty tables to
array shape. jsoncpp's strict comparator threw Json::LogicError and
aborted the whole suite. Setting __serialize='map' on the output
gives `{}` and unblocks all JsonOutput tests.
3. PB_CONFORMANCE_SKIP_JSON gate is opt-in by default. core.lua now
matches exactly "1" (so docker -e VAR= disables it), and the
Dockerfile no longer hard-codes "=1" — JSON output runs end-to-end
for everyone unless they re-enable the gate.
Conformance moves from 930 / 1869 / 11 to 1389 / 1313 / 79
(successes / skipped / expected fails). The 75 new expected fails
are canonical-form edge cases (Duration formatting sign handling,
Timestamp out-of-range rejection, double precision digits, NaN
canonicalization, JSON-input strict rejection) — left for a follow-up.
Drops 7 entries from test/conformance/known_failures.txt that this
change closes; adds 75 newly-visible ones.
Eugene Blikh <bigbes@gmail.com> — 2026-05-15 22:04:55 UTC
Commit 37c56322536a2a0b1c8c79d9e531f613795ccba1 —
view raw patch
Parent(s):
b1273f1b
| File | Status | + | − |
|---|---|---|---|
PLAN.md
|
M | +10 | -7 |
README.md
|
M | +9 | -6 |
cmd/conformance/core.lua
|
M | +3 | -1 |
docker/conformance.Dockerfile
|
M | +5 | -2 |
runtime/pb/json.lua
|
M | +11 | -2 |
test/conformance/known_failures.txt
|
M | +75 | -10 |