Open thebjorn opened 9 years ago
@thebjorn This is quite nice, but IMHO looking at the first line only can be misleading and is not fool proof. FWIW mixed line endings are possible. It may be better instead to avoid any line ending changes by just keeping them as them were in the original files.
@pombreda that's actually what this code tries to do ;-) The problem here is that the line endings in the replacement text has no relation to the line endings in the file. We shouldn't try to change line endings in the file, and we should definitely not introduce mixed line endings. If the file has consistent line endings, then it is sufficient to look at the first line. If the file does not have consistent line endings, then no choice of line endings will be correct (making it sufficient to also look at the first line only). IIRC then the current code always adds \r\n on windows, which will corrupt files containing only \n (I seem to remember that I found this in a makefile, but it's a while ago).
We want to keep the line endings in the source file, regardless of what the line endings in the config file is. The algorithm for finding the line ending, and the decision to only look at the first line, is inspired by ConfigObj (https://github.com/DiffSK/configobj/blob/0daebcb55aec2b5a18b287bbb2f4f6f03599f00e/configobj.py#L1294).
This fixes the windows test failure of test_search_replace_expanding_changelog.