Preserve the validation error when parsing a malformed statement - #1846
Open
DrVelvetFog wants to merge 1 commit into
Open
Preserve the validation error when parsing a malformed statement#1846DrVelvetFog wants to merge 1 commit into
DrVelvetFog wants to merge 1 commit into
Conversation
Statement(contents=...) discarded the pydantic ValidationError, leaving callers with a bare "malformed in-toto statement" and no __cause__, so a rejected digest algorithm, a missing field and a bad _type were indistinguishable. StatementBuilder.build() already surfaces the underlying error; this makes the parsing path match. Signed-off-by: Antoni Jagodka <tjagodka@gmail.com>
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.
Statement(contents=...)discards the pydanticValidationError, so callers getmalformed in-toto statementwith no indication of what was malformed — a rejected digest algorithm, a missing field and a bad_typeare indistinguishable, and__cause__isNone.StatementBuilder.build()in the same module already surfaces it:This makes the parsing path match.
Found while parsing a statement whose subject used
gitCommit. That rejection is deliberate per #1018 and this doesn't change it — only what the caller is told about it.The test asserts the cause is preserved and that the message names the offending field; it fails without the change: