You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.2 KiB
103 lines
2.2 KiB
#!/bin/sh |
|
|
|
test_description='CRLF conversion' |
|
|
|
. ./test-lib.sh |
|
|
|
has_cr() { |
|
tr '\015' Q <"$1" | grep Q >/dev/null |
|
} |
|
|
|
test_expect_success setup ' |
|
|
|
git config core.autocrlf false && |
|
|
|
echo "one text" > .gitattributes && |
|
|
|
for w in Hello world how are you; do echo $w; done >one && |
|
for w in I am very very fine thank you; do echo $w; done >two && |
|
git add . && |
|
|
|
git commit -m initial && |
|
|
|
one=$(git rev-parse HEAD:one) && |
|
two=$(git rev-parse HEAD:two) && |
|
|
|
echo happy. |
|
' |
|
|
|
test_expect_success 'eol=lf puts LFs in normalized file' ' |
|
|
|
rm -f .gitattributes tmp one two && |
|
git config core.eol lf && |
|
git read-tree --reset -u HEAD && |
|
|
|
! has_cr one && |
|
! has_cr two && |
|
onediff=$(git diff one) && |
|
twodiff=$(git diff two) && |
|
test -z "$onediff" && test -z "$twodiff" |
|
' |
|
|
|
test_expect_success 'eol=crlf puts CRLFs in normalized file' ' |
|
|
|
rm -f .gitattributes tmp one two && |
|
git config core.eol crlf && |
|
git read-tree --reset -u HEAD && |
|
|
|
has_cr one && |
|
! has_cr two && |
|
onediff=$(git diff one) && |
|
twodiff=$(git diff two) && |
|
test -z "$onediff" && test -z "$twodiff" |
|
' |
|
|
|
test_expect_success 'autocrlf=true overrides eol=lf' ' |
|
|
|
rm -f .gitattributes tmp one two && |
|
git config core.eol lf && |
|
git config core.autocrlf true && |
|
git read-tree --reset -u HEAD && |
|
|
|
has_cr one && |
|
has_cr two && |
|
onediff=$(git diff one) && |
|
twodiff=$(git diff two) && |
|
test -z "$onediff" && test -z "$twodiff" |
|
' |
|
|
|
test_expect_success 'autocrlf=true overrides unset eol' ' |
|
|
|
rm -f .gitattributes tmp one two && |
|
git config --unset-all core.eol && |
|
git config core.autocrlf true && |
|
git read-tree --reset -u HEAD && |
|
|
|
has_cr one && |
|
has_cr two && |
|
onediff=$(git diff one) && |
|
twodiff=$(git diff two) && |
|
test -z "$onediff" && test -z "$twodiff" |
|
' |
|
|
|
test_expect_success NATIVE_CRLF 'eol native is crlf' ' |
|
|
|
rm -rf native_eol && mkdir native_eol && |
|
( |
|
cd native_eol && |
|
printf "*.txt text\n" >.gitattributes && |
|
printf "one\r\ntwo\r\nthree\r\n" >filedos.txt && |
|
printf "one\ntwo\nthree\n" >fileunix.txt && |
|
git init && |
|
git config core.autocrlf false && |
|
git config core.eol native && |
|
git add filedos.txt fileunix.txt && |
|
git commit -m "first" && |
|
rm file*.txt && |
|
git reset --hard HEAD && |
|
has_cr filedos.txt && |
|
has_cr fileunix.txt |
|
) |
|
' |
|
|
|
test_done
|
|
|