]> git.ipfire.org Git - thirdparty/git.git/blame - t/t0025-crlf-auto.sh
Merge branch 'dk/raise-core-deltabasecachelimit'
[thirdparty/git.git] / t / t0025-crlf-auto.sh
CommitLineData
56499eb9
EB
1#!/bin/sh
2
3test_description='CRLF conversion'
4
5. ./test-lib.sh
6
7has_cr() {
8 tr '\015' Q <"$1" | grep Q >/dev/null
9}
10
11test_expect_success setup '
12
13 git config core.autocrlf false &&
14
15 for w in Hello world how are you; do echo $w; done >one &&
16 for w in I am very very fine thank you; do echo ${w}Q; done | q_to_cr >two &&
17 for w in Oh here is a QNUL byte how alarming; do echo ${w}; done | q_to_nul >three &&
18 git add . &&
19
20 git commit -m initial &&
21
0bf64149
EP
22 one=$(git rev-parse HEAD:one) &&
23 two=$(git rev-parse HEAD:two) &&
24 three=$(git rev-parse HEAD:three) &&
56499eb9
EB
25
26 echo happy.
27'
28
29test_expect_success 'default settings cause no changes' '
30
31 rm -f .gitattributes tmp one two three &&
32 git read-tree --reset -u HEAD &&
33
34 ! has_cr one &&
35 has_cr two &&
0bf64149
EP
36 onediff=$(git diff one) &&
37 twodiff=$(git diff two) &&
38 threediff=$(git diff three) &&
56499eb9
EB
39 test -z "$onediff" -a -z "$twodiff" -a -z "$threediff"
40'
41
fd6cce9e 42test_expect_success 'crlf=true causes a CRLF file to be normalized' '
56499eb9 43
5ec3e670 44 # Backwards compatibility check
56499eb9
EB
45 rm -f .gitattributes tmp one two three &&
46 echo "two crlf" > .gitattributes &&
47 git read-tree --reset -u HEAD &&
48
49 # Note, "normalized" means that git will normalize it if added
50 has_cr two &&
0bf64149 51 twodiff=$(git diff two) &&
56499eb9
EB
52 test -n "$twodiff"
53'
54
5ec3e670
EB
55test_expect_success 'text=true causes a CRLF file to be normalized' '
56
57 rm -f .gitattributes tmp one two three &&
58 echo "two text" > .gitattributes &&
59 git read-tree --reset -u HEAD &&
60
61 # Note, "normalized" means that git will normalize it if added
62 has_cr two &&
0bf64149 63 twodiff=$(git diff two) &&
5ec3e670
EB
64 test -n "$twodiff"
65'
66
fd6cce9e 67test_expect_success 'eol=crlf gives a normalized file CRLFs with autocrlf=false' '
56499eb9
EB
68
69 rm -f .gitattributes tmp one two three &&
70 git config core.autocrlf false &&
71 echo "one eol=crlf" > .gitattributes &&
72 git read-tree --reset -u HEAD &&
73
74 has_cr one &&
0bf64149 75 onediff=$(git diff one) &&
56499eb9
EB
76 test -z "$onediff"
77'
78
fd6cce9e 79test_expect_success 'eol=crlf gives a normalized file CRLFs with autocrlf=input' '
56499eb9
EB
80
81 rm -f .gitattributes tmp one two three &&
82 git config core.autocrlf input &&
83 echo "one eol=crlf" > .gitattributes &&
84 git read-tree --reset -u HEAD &&
85
86 has_cr one &&
0bf64149 87 onediff=$(git diff one) &&
56499eb9
EB
88 test -z "$onediff"
89'
90
fd6cce9e 91test_expect_success 'eol=lf gives a normalized file LFs with autocrlf=true' '
56499eb9
EB
92
93 rm -f .gitattributes tmp one two three &&
94 git config core.autocrlf true &&
95 echo "one eol=lf" > .gitattributes &&
96 git read-tree --reset -u HEAD &&
97
98 ! has_cr one &&
0bf64149 99 onediff=$(git diff one) &&
56499eb9
EB
100 test -z "$onediff"
101'
102
103test_expect_success 'autocrlf=true does not normalize CRLF files' '
104
105 rm -f .gitattributes tmp one two three &&
106 git config core.autocrlf true &&
107 git read-tree --reset -u HEAD &&
108
109 has_cr one &&
110 has_cr two &&
0bf64149
EP
111 onediff=$(git diff one) &&
112 twodiff=$(git diff two) &&
113 threediff=$(git diff three) &&
56499eb9
EB
114 test -z "$onediff" -a -z "$twodiff" -a -z "$threediff"
115'
116
5ec3e670 117test_expect_success 'text=auto, autocrlf=true _does_ normalize CRLF files' '
56499eb9
EB
118
119 rm -f .gitattributes tmp one two three &&
120 git config core.autocrlf true &&
5ec3e670 121 echo "* text=auto" > .gitattributes &&
56499eb9
EB
122 git read-tree --reset -u HEAD &&
123
124 has_cr one &&
125 has_cr two &&
0bf64149
EP
126 onediff=$(git diff one) &&
127 twodiff=$(git diff two) &&
128 threediff=$(git diff three) &&
56499eb9
EB
129 test -z "$onediff" -a -n "$twodiff" -a -z "$threediff"
130'
131
5ec3e670 132test_expect_success 'text=auto, autocrlf=true does not normalize binary files' '
56499eb9
EB
133
134 rm -f .gitattributes tmp one two three &&
135 git config core.autocrlf true &&
5ec3e670 136 echo "* text=auto" > .gitattributes &&
56499eb9
EB
137 git read-tree --reset -u HEAD &&
138
139 ! has_cr three &&
0bf64149 140 threediff=$(git diff three) &&
56499eb9
EB
141 test -z "$threediff"
142'
143
fd6cce9e 144test_expect_success 'eol=crlf _does_ normalize binary files' '
56499eb9
EB
145
146 rm -f .gitattributes tmp one two three &&
147 echo "three eol=crlf" > .gitattributes &&
148 git read-tree --reset -u HEAD &&
149
150 has_cr three &&
0bf64149 151 threediff=$(git diff three) &&
56499eb9
EB
152 test -z "$threediff"
153'
154
155test_done