Repository navigation
conformance: run the protobuf suite against the table codec - #478
Merged
Merged
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
iainmcgin
added this pull request to stack #497
October 1, 2026 18:26
iainmcgin
force-pushed
the
table-conformance
branch
from
October 1, 2026 18:40
6afc420 to
eaf2185
Compare
iainmcgin
marked this pull request as ready for review
October 1, 2026 18:47
iainmcgin
force-pushed
the
table-conformance
branch
from
October 2, 2026 00:30
eaf2185 to
ffbbafe
Compare
This was referenced Oct 5, 2026
azdagron
previously approved these changes
Oct 7, 2026
github-merge-queue
Bot
removed this pull request from the merge queue because a pull request earlier in the stack was removed
Oct 7, 2026
iainmcgin
force-pushed
the
table-conformance
branch
from
October 7, 2026 15:36
ffbbafe to
6acffa7
Compare
… feature The `table` feature selects CodecStrategy::Table for every conformance schema. A compile-time pin in main.rs names the table statics of the messages that must use it, so a fallback rule cannot silently turn the run back into an unrolled one.
Adds the table binary to the Docker image, the local script and the CI conformance job, with its own known-failures list. The build needs Rust 1.77; buffa-build refuses an older compiler.
With CONFORMANCE_OUT set, each run's output goes through tee, and without pipefail the pipeline exits with tee's status, so a failing conformance_test_runner left the container exit code at zero.
The std, table and no_std builds now share a target dir, so the dependencies and build scripts they have in common compile once. Each binary is copied out before the next build overwrites it.
All three builds share a target dir and the no_std run uses its artifact in place, so the std and table binaries are copied out first.
…make the pin compile-time only The requirement is stated once, on the feature. The pin becomes an unnamed const block, so it does not read as a test and needs no dead_code allow.
…ipt from the repo root rust-toolchain.toml selects the toolchain from the working directory, so the local script now changes to the repository root before it builds.
The via-table paragraph names the categories that fall back to the unrolled codec, including the top-level TestAllTypesProto2, and gives the measured success count. The text failure list notes that the table run shares it.
iainmcgin
force-pushed
the
table-conformance
branch
from
October 7, 2026 15:54
6acffa7 to
2af27cd
Compare
azdagron
approved these changes
Oct 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Runs the protobuf conformance suite against test messages generated with
CodecStrategy::Table, so the table codec (oneofs, maps, and the bridge to well-known-type children) is tested against an independent corpus.The run passes 5,549 binary and JSON cases and 883 text-format cases with an empty failure list. 52 of the 72 generated messages use the table. The rest, including the top-level
TestAllTypesProto2, run through the unrolled codec, so the run covers proto3, editions and nested proto2 messages. A compile-time check fails the build if the messages that must use the table stop doing so. Breaking the map write, the bridge merge or oneof message-member placement in the runtime fails 240, 32 and 20 cases.run-conformance.shnow usespipefail, so a failing run no longer exits 0 whenCONFORMANCE_OUTpipes it throughtee.run-conformance-local.shchanges to the repository root first, sorust-toolchain.tomlapplies, and keeps one target dir per binary, as it did for no_std. The last ten successfulmainconformance jobs took 2:57 to 4:02, so the job keeps its 15-minute timeout.Stacked on #477, the last of the table codec PRs (#469, #475, #476).