Repository navigation
Fix header sorting to be case-insensitive - #1976
Open
charan-rathore wants to merge 1 commit into
Open
charan-rathore wants to merge 1 commit into
charan-rathore wants to merge 1 commit into
Conversation
HeadersFormatter sorted header lines with a case-sensitive key, so uppercase names sorted before lowercase ones instead of following alphabetical order. Compare case-insensitively while keeping the original text untouched. Fixes httpie#1960. Signed-off-by: Charan Rathore <180254320+charan-rathore@users.noreply.github.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.
Fixes #1960.
HeadersFormatter.format_headerssorts header lines with the keyh.split(':')[0], which compares case-sensitively. ASCII uppercase letters sort before lowercase ones, soZebra: foowas placed beforeapple: fooeven though alphabetical sorting should be case-insensitive for header names (which are case-insensitive per RFC 9110).This changes the sort key to
h.split(':')[0].lower(), keeping the displayed header text untouched and preserving the stable relative order of repeated header names.Added a regression test
test_header_sorting_is_case_insensitivealongside the existing format-options tests. Verified the test fails before the change and passes after; fulltests/test_output.pypasses (122 passed, 3 xfailed).