Code

"diff --check" should affect exit status
[git.git] / t / t4015-diff-whitespace.sh
index adf4993bacf05b4ccb0b447910dda6a2c453bc83..dc538b3e33858623eff8a10d30a488194b58667d 100755 (executable)
@@ -17,7 +17,7 @@ do {
 } while (0);
 EOF
 
-git-update-index --add x
+git update-index --add x
 
 cat << EOF > x
 do
@@ -42,14 +42,14 @@ index adf3937..6edc172 100644
 +while (0);
 EOF
 
-git-diff > out
-test_expect_success "Ray's example without options" 'diff -u expect out'
+git diff > out
+test_expect_success "Ray's example without options" 'git diff expect out'
 
-git-diff -w > out
-test_expect_success "Ray's example with -w" 'diff -u expect out'
+git diff -w > out
+test_expect_success "Ray's example with -w" 'git diff expect out'
 
-git-diff -b > out
-test_expect_success "Ray's example with -b" 'diff -u expect out'
+git diff -b > out
+test_expect_success "Ray's example with -b" 'git diff expect out'
 
 tr 'Q' '\015' << EOF > x
 whitespace at beginning
@@ -60,7 +60,7 @@ unchanged line
 CR at endQ
 EOF
 
-git-update-index x
+git update-index x
 
 cat << EOF > x
        whitespace at beginning
@@ -89,15 +89,15 @@ index d99af23..8b32fb5 100644
 -CR at endQ
 +CR at end
 EOF
-git-diff > out
-test_expect_success 'another test, without options' 'diff -u expect out'
+git diff > out
+test_expect_success 'another test, without options' 'git diff expect out'
 
 cat << EOF > expect
 diff --git a/x b/x
 index d99af23..8b32fb5 100644
 EOF
-git-diff -w > out
-test_expect_success 'another test, with -w' 'diff -u expect out'
+git diff -w > out
+test_expect_success 'another test, with -w' 'git diff expect out'
 
 tr 'Q' '\015' << EOF > expect
 diff --git a/x b/x
@@ -114,7 +114,151 @@ index d99af23..8b32fb5 100644
  unchanged line
  CR at endQ
 EOF
-git-diff -b > out
-test_expect_success 'another test, with -b' 'diff -u expect out'
+git diff -b > out
+test_expect_success 'another test, with -b' 'git diff expect out'
+
+test_expect_success 'check mixed spaces and tabs in indent' '
+
+       # This is indented with SP HT SP.
+       echo "   foo();" > x &&
+       git diff --check | grep "space before tab"
+
+'
+
+test_expect_success 'check with no whitespace errors' '
+
+       git commit -m "snapshot" &&
+       echo "foo();" > x &&
+       git diff --check
+
+'
+
+test_expect_failure 'check with trailing whitespace' '
+
+       echo "foo(); " > x &&
+       git diff --check
+
+'
+
+test_expect_failure 'check with space before tab in indent' '
+
+       # indent has space followed by hard tab
+       echo "  foo();" > x &&
+       git diff --check
+
+'
+
+test_expect_failure '--check and --exit-code are exclusive' '
+
+       git checkout x &&
+       git diff --check --exit-code
+
+'
+
+test_expect_failure '--check and --quiet are exclusive' '
+
+       git diff --check --quiet
+
+'
+
+test_expect_success 'check staged with no whitespace errors' '
+
+       echo "foo();" > x &&
+       git add x &&
+       git diff --cached --check
+
+'
+
+test_expect_failure 'check staged with trailing whitespace' '
+
+       echo "foo(); " > x &&
+       git add x &&
+       git diff --cached --check
+
+'
+
+test_expect_failure 'check staged with space before tab in indent' '
+
+       # indent has space followed by hard tab
+       echo "  foo();" > x &&
+       git add x &&
+       git diff --cached --check
+
+'
+
+test_expect_success 'check with no whitespace errors (diff-index)' '
+
+       echo "foo();" > x &&
+       git add x &&
+       git diff-index --check HEAD
+
+'
+
+test_expect_failure 'check with trailing whitespace (diff-index)' '
+
+       echo "foo(); " > x &&
+       git add x &&
+       git diff-index --check HEAD
+
+'
+
+test_expect_failure 'check with space before tab in indent (diff-index)' '
+
+       # indent has space followed by hard tab
+       echo "  foo();" > x &&
+       git add x &&
+       git diff-index --check HEAD
+
+'
+
+test_expect_success 'check staged with no whitespace errors (diff-index)' '
+
+       echo "foo();" > x &&
+       git add x &&
+       git diff-index --cached --check HEAD
+
+'
+
+test_expect_failure 'check staged with trailing whitespace (diff-index)' '
+
+       echo "foo(); " > x &&
+       git add x &&
+       git diff-index --cached --check HEAD
+
+'
+
+test_expect_failure 'check staged with space before tab in indent (diff-index)' '
+
+       # indent has space followed by hard tab
+       echo "  foo();" > x &&
+       git add x &&
+       git diff-index --cached --check HEAD
+
+'
+
+test_expect_success 'check with no whitespace errors (diff-tree)' '
+
+       echo "foo();" > x &&
+       git commit -m "new commit" x &&
+       git diff-tree --check HEAD^ HEAD
+
+'
+
+test_expect_failure 'check with trailing whitespace (diff-tree)' '
+
+       echo "foo(); " > x &&
+       git commit -m "another commit" x &&
+       git diff-tree --check HEAD^ HEAD
+
+'
+
+test_expect_failure 'check with space before tab in indent (diff-tree)' '
+
+       # indent has space followed by hard tab
+       echo "  foo();" > x &&
+       git commit -m "yet another" x &&
+       git diff-tree --check HEAD^ HEAD
+
+'
 
 test_done