Conversation
… 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.
|
All contributors have signed the CLA ✍️ ✅ |
This branch has not been deployed
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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).