@matheusbsbs / matheus-bagliano / commits / 56499eb9b8
Fork 0

Add tests for per-repository eol normalization

Signed-off-by: Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Eyvind Bernhardsen committed May 19, 2010 at 22:43 UTC 56499eb9b84453742222676d98e11be3c390c34d
1 file changed +142
t/t0025-crlf-auto.sh new
+142
@@ -0,0 +1,142 @@
1 +#!/bin/sh
2 +
3 +test_description='CRLF conversion'
4 +
5 +. ./test-lib.sh
6 +
7 +has_cr() {
8 + tr '\015' Q <"$1" | grep Q >/dev/null
9 +}
10 +
11 +test_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 +
22 + one=`git rev-parse HEAD:one` &&
23 + two=`git rev-parse HEAD:two` &&
24 + three=`git rev-parse HEAD:three` &&
25 +
26 + echo happy.
27 +'
28 +
29 +test_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 &&
36 + onediff=`git diff one` &&
37 + twodiff=`git diff two` &&
38 + threediff=`git diff three` &&
39 + test -z "$onediff" -a -z "$twodiff" -a -z "$threediff"
40 +'
41 +
42 +test_expect_failure 'crlf=true causes a CRLF file to be normalized' '
43 +
44 + rm -f .gitattributes tmp one two three &&
45 + echo "two crlf" > .gitattributes &&
46 + git read-tree --reset -u HEAD &&
47 +
48 + # Note, "normalized" means that git will normalize it if added
49 + has_cr two &&
50 + twodiff=`git diff two` &&
51 + test -n "$twodiff"
52 +'
53 +
54 +test_expect_failure 'eol=crlf gives a normalized file CRLFs with autocrlf=false' '
55 +
56 + rm -f .gitattributes tmp one two three &&
57 + git config core.autocrlf false &&
58 + echo "one eol=crlf" > .gitattributes &&
59 + git read-tree --reset -u HEAD &&
60 +
61 + has_cr one &&
62 + onediff=`git diff one` &&
63 + test -z "$onediff"
64 +'
65 +
66 +test_expect_failure 'eol=crlf gives a normalized file CRLFs with autocrlf=input' '
67 +
68 + rm -f .gitattributes tmp one two three &&
69 + git config core.autocrlf input &&
70 + echo "one eol=crlf" > .gitattributes &&
71 + git read-tree --reset -u HEAD &&
72 +
73 + has_cr one &&
74 + onediff=`git diff one` &&
75 + test -z "$onediff"
76 +'
77 +
78 +test_expect_failure 'eol=lf gives a normalized file LFs with autocrlf=true' '
79 +
80 + rm -f .gitattributes tmp one two three &&
81 + git config core.autocrlf true &&
82 + echo "one eol=lf" > .gitattributes &&
83 + git read-tree --reset -u HEAD &&
84 +
85 + ! has_cr one &&
86 + onediff=`git diff one` &&
87 + test -z "$onediff"
88 +'
89 +
90 +test_expect_success 'autocrlf=true does not normalize CRLF files' '
91 +
92 + rm -f .gitattributes tmp one two three &&
93 + git config core.autocrlf true &&
94 + git read-tree --reset -u HEAD &&
95 +
96 + has_cr one &&
97 + has_cr two &&
98 + onediff=`git diff one` &&
99 + twodiff=`git diff two` &&
100 + threediff=`git diff three` &&
101 + test -z "$onediff" -a -z "$twodiff" -a -z "$threediff"
102 +'
103 +
104 +test_expect_failure 'crlf=auto, autocrlf=true _does_ normalize CRLF files' '
105 +
106 + rm -f .gitattributes tmp one two three &&
107 + git config core.autocrlf true &&
108 + echo "* crlf=auto" > .gitattributes &&
109 + git read-tree --reset -u HEAD &&
110 +
111 + has_cr one &&
112 + has_cr two &&
113 + onediff=`git diff one` &&
114 + twodiff=`git diff two` &&
115 + threediff=`git diff three` &&
116 + test -z "$onediff" -a -n "$twodiff" -a -z "$threediff"
117 +'
118 +
119 +test_expect_success 'crlf=auto, autocrlf=true does not normalize binary files' '
120 +
121 + rm -f .gitattributes tmp one two three &&
122 + git config core.autocrlf true &&
123 + echo "* crlf=auto" > .gitattributes &&
124 + git read-tree --reset -u HEAD &&
125 +
126 + ! has_cr three &&
127 + threediff=`git diff three` &&
128 + test -z "$threediff"
129 +'
130 +
131 +test_expect_failure 'eol=crlf _does_ normalize binary files' '
132 +
133 + rm -f .gitattributes tmp one two three &&
134 + echo "three eol=crlf" > .gitattributes &&
135 + git read-tree --reset -u HEAD &&
136 +
137 + has_cr three &&
138 + threediff=`git diff three` &&
139 + test -z "$threediff"
140 +'
141 +
142 +test_done