Repository navigation
Conversation
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.
Problem
When validating multiple spec files, a file that cannot be read (missing
path, directory, unreadable file) aborts the whole run in two unhelpful
ways:
main()prints the bare exception(
No such file: foo.yaml), so with several inputs you cannot tellwhich one failed.
sys.exit(1)fires immediately, so the files listed after the bad oneare never validated.
Repro
Before: prints
No such file: i_dont_exist.yamland exits;petstore.yamlis never checked.
Fix
In
openapi_spec_validator/__main__.py, report read failures through theexisting
print_error(filename, exc)helper (so the message carries thefile name), keep validating the remaining files, and exit nonzero at the
end if any input failed to read. Validation-error paths are untouched, and
the single-file case still exits nonzero with the same message text.
Tests
Added
test_read_error_names_file_and_continuestotests/integration/test_main.py: a missing file followed by a valid specprints
i_dont_exist.yaml: Error: ...ANDpetstore.yaml: OK, then exitsnonzero. Fails before the fix (valid file never processed), passes after.
Full
tests/integration/test_main.py: 23 passed.