1#!/bin/sh 2# 3# Copyright (c) 2006 Johannes E. Schindelin 4# 5 6test_description='Test special whitespace in diff engine. 7 8' 9. ./test-lib.sh 10. ../diff-lib.sh 11 12# Ray Lehtiniemi's example 13 14cat<< EOF > x 15do { 16 nothing; 17} while (0); 18EOF 19 20git update-index --add x 21 22cat<< EOF > x 23do 24{ 25 nothing; 26} 27while (0); 28EOF 29 30cat<< EOF > expect 31diff --git a/x b/x 32index adf3937..6edc172 100644 33--- a/x 34+++ b/x 35@@ -1,3 +1,5 @@ 36-do { 37+do 38+{ 39 nothing; 40-} while (0); 41+} 42+while (0); 43EOF 44 45git diff> out 46test_expect_success "Ray's example without options"'git diff expect out' 47 48git diff-w> out 49test_expect_success "Ray's example with -w"'git diff expect out' 50 51git diff-b> out 52test_expect_success "Ray's example with -b"'git diff expect out' 53 54tr'Q''\015'<< EOF > x 55whitespace at beginning 56whitespace change 57whitespace in the middle 58whitespace at end 59unchanged line 60CR at endQ 61EOF 62 63git update-index x 64 65cat<< EOF > x 66 whitespace at beginning 67whitespace change 68white space in the middle 69whitespace at end 70unchanged line 71CR at end 72EOF 73 74tr'Q''\015'<< EOF > expect 75diff --git a/x b/x 76index d99af23..8b32fb5 100644 77--- a/x 78+++ b/x 79@@ -1,6 +1,6 @@ 80-whitespace at beginning 81-whitespace change 82-whitespace in the middle 83-whitespace at end 84+ whitespace at beginning 85+whitespace change 86+white space in the middle 87+whitespace at end 88 unchanged line 89-CR at endQ 90+CR at end 91EOF 92git diff> out 93test_expect_success 'another test, without options''git diff expect out' 94 95cat<< EOF > expect 96diff --git a/x b/x 97index d99af23..8b32fb5 100644 98EOF 99git diff-w> out 100test_expect_success 'another test, with -w''git diff expect out' 101 102tr'Q''\015'<< EOF > expect 103diff --git a/x b/x 104index d99af23..8b32fb5 100644 105--- a/x 106+++ b/x 107@@ -1,6 +1,6 @@ 108-whitespace at beginning 109+ whitespace at beginning 110 whitespace change 111-whitespace in the middle 112+white space in the middle 113 whitespace at end 114 unchanged line 115 CR at endQ 116EOF 117git diff-b> out 118test_expect_success 'another test, with -b''git diff expect out' 119 120test_expect_success 'check mixed spaces and tabs in indent'' 121 122 # This is indented with SP HT SP. 123 echo " foo();" > x && 124 git diff --check | grep "space before tab" 125 126' 127 128test_expect_success 'check with no whitespace errors'' 129 130 git commit -m "snapshot" && 131 echo "foo();" > x && 132 git diff --check 133 134' 135 136test_expect_failure 'check with trailing whitespace'' 137 138 echo "foo(); " > x && 139 git diff --check 140 141' 142 143test_expect_failure 'check with space before tab in indent'' 144 145 # indent has space followed by hard tab 146 echo " foo();" > x && 147 git diff --check 148 149' 150 151test_expect_failure '--check and --exit-code are exclusive'' 152 153 git checkout x && 154 git diff --check --exit-code 155 156' 157 158test_expect_failure '--check and --quiet are exclusive'' 159 160 git diff --check --quiet 161 162' 163 164test_expect_success 'check staged with no whitespace errors'' 165 166 echo "foo();" > x && 167 git add x && 168 git diff --cached --check 169 170' 171 172test_expect_failure 'check staged with trailing whitespace'' 173 174 echo "foo(); " > x && 175 git add x && 176 git diff --cached --check 177 178' 179 180test_expect_failure 'check staged with space before tab in indent'' 181 182 # indent has space followed by hard tab 183 echo " foo();" > x && 184 git add x && 185 git diff --cached --check 186 187' 188 189test_expect_success 'check with no whitespace errors (diff-index)'' 190 191 echo "foo();" > x && 192 git add x && 193 git diff-index --check HEAD 194 195' 196 197test_expect_failure 'check with trailing whitespace (diff-index)'' 198 199 echo "foo(); " > x && 200 git add x && 201 git diff-index --check HEAD 202 203' 204 205test_expect_failure 'check with space before tab in indent (diff-index)'' 206 207 # indent has space followed by hard tab 208 echo " foo();" > x && 209 git add x && 210 git diff-index --check HEAD 211 212' 213 214test_expect_success 'check staged with no whitespace errors (diff-index)'' 215 216 echo "foo();" > x && 217 git add x && 218 git diff-index --cached --check HEAD 219 220' 221 222test_expect_failure 'check staged with trailing whitespace (diff-index)'' 223 224 echo "foo(); " > x && 225 git add x && 226 git diff-index --cached --check HEAD 227 228' 229 230test_expect_failure 'check staged with space before tab in indent (diff-index)'' 231 232 # indent has space followed by hard tab 233 echo " foo();" > x && 234 git add x && 235 git diff-index --cached --check HEAD 236 237' 238 239test_expect_success 'check with no whitespace errors (diff-tree)'' 240 241 echo "foo();" > x && 242 git commit -m "new commit" x && 243 git diff-tree --check HEAD^ HEAD 244 245' 246 247test_expect_failure 'check with trailing whitespace (diff-tree)'' 248 249 echo "foo(); " > x && 250 git commit -m "another commit" x && 251 git diff-tree --check HEAD^ HEAD 252 253' 254 255test_expect_failure 'check with space before tab in indent (diff-tree)'' 256 257 # indent has space followed by hard tab 258 echo " foo();" > x && 259 git commit -m "yet another" x && 260 git diff-tree --check HEAD^ HEAD 261 262' 263 264test_done