mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-05-15 13:40:37 +00:00
Fix requirements-txt-fixer reordering pip options like --index-url
The requirements-txt-fixer was alphabetically sorting all lines, including pip options like --index-url and --extra-index-url. This caused --extra-index-url to be sorted above --index-url, breaking pip's index resolution order since --index-url must come first. Fix by preserving the original relative order of lines that start with `--` (pip options), while still sorting regular package requirements alphabetically. Closes #612 Bahtya
This commit is contained in:
parent
d1283494cb
commit
dfac6b321e
2 changed files with 41 additions and 0 deletions
|
|
@ -107,6 +107,39 @@ from pre_commit_hooks.requirements_txt_fixer import Requirement
|
|||
PASS,
|
||||
b'a=2.0.0 \\\n --hash=sha256:abcd\nb==1.0.0\n',
|
||||
),
|
||||
# --index-url and --extra-index-url should maintain original order
|
||||
# see: https://github.com/pre-commit/pre-commit-hooks/issues/612
|
||||
(
|
||||
b'--index-url https://example.com/simple\n'
|
||||
b'--extra-index-url https://example.com/extra\n'
|
||||
b'foo\n',
|
||||
PASS,
|
||||
b'--index-url https://example.com/simple\n'
|
||||
b'--extra-index-url https://example.com/extra\n'
|
||||
b'foo\n',
|
||||
),
|
||||
# pip options should not be reordered even if out of alpha order
|
||||
(
|
||||
b'--extra-index-url https://example.com/extra\n'
|
||||
b'--index-url https://example.com/simple\n'
|
||||
b'foo\n',
|
||||
PASS,
|
||||
b'--extra-index-url https://example.com/extra\n'
|
||||
b'--index-url https://example.com/simple\n'
|
||||
b'foo\n',
|
||||
),
|
||||
# packages should still be sorted while pip options stay in place
|
||||
(
|
||||
b'--index-url https://example.com/simple\n'
|
||||
b'--extra-index-url https://example.com/extra\n'
|
||||
b'foo\n'
|
||||
b'bar\n',
|
||||
FAIL,
|
||||
b'--index-url https://example.com/simple\n'
|
||||
b'--extra-index-url https://example.com/extra\n'
|
||||
b'bar\n'
|
||||
b'foo\n',
|
||||
),
|
||||
),
|
||||
)
|
||||
def test_integration(input_s, expected_retval, output, tmpdir):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue