Merge branch 'nd/magic-pathspec-from-root'
[gitweb.git] / t / t7102-reset.sh
index f1cfc9ac959ee281d50f7b8a51fdcefd2d0670e7..1fa2a5fc23da25643552cdf43408cb75480194ff 100755 (executable)
@@ -388,7 +388,8 @@ test_expect_success 'test --mixed <paths>' '
        echo 4 > file4 &&
        echo 5 > file1 &&
        git add file1 file3 file4 &&
-       test_must_fail git reset HEAD -- file1 file2 file3 &&
+       git reset HEAD -- file1 file2 file3 &&
+       test_must_fail git diff --quiet &&
        git diff > output &&
        test_cmp output expect &&
        git diff --cached > output &&
@@ -402,7 +403,8 @@ test_expect_success 'test resetting the index at give paths' '
        >sub/file2 &&
        git update-index --add sub/file1 sub/file2 &&
        T=$(git write-tree) &&
-       test_must_fail git reset HEAD sub/file2 &&
+       git reset HEAD sub/file2 &&
+       test_must_fail git diff --quiet &&
        U=$(git write-tree) &&
        echo "$T" &&
        echo "$U" &&
@@ -429,12 +431,29 @@ test_expect_success '--mixed refreshes the index' '
        test_i18ncmp expect output
 '
 
+test_expect_success 'resetting specific path that is unmerged' '
+       git rm --cached file2 &&
+       F1=$(git rev-parse HEAD:file1) &&
+       F2=$(git rev-parse HEAD:file2) &&
+       F3=$(git rev-parse HEAD:secondfile) &&
+       {
+               echo "100644 $F1 1      file2" &&
+               echo "100644 $F2 2      file2" &&
+               echo "100644 $F3 3      file2"
+       } | git update-index --index-info &&
+       git ls-files -u &&
+       git reset HEAD file2 &&
+       test_must_fail git diff --quiet &&
+       git diff-index --exit-code --cached HEAD
+'
+
 test_expect_success 'disambiguation (1)' '
 
        git reset --hard &&
        >secondfile &&
        git add secondfile &&
-       test_must_fail git reset secondfile &&
+       git reset secondfile &&
+       test_must_fail git diff --quiet -- secondfile &&
        test -z "$(git diff --cached --name-only)" &&
        test -f secondfile &&
        test ! -s secondfile
@@ -459,7 +478,8 @@ test_expect_success 'disambiguation (3)' '
        >secondfile &&
        git add secondfile &&
        rm -f secondfile &&
-       test_must_fail git reset HEAD secondfile &&
+       git reset HEAD secondfile &&
+       test_must_fail git diff --quiet &&
        test -z "$(git diff --cached --name-only)" &&
        test ! -f secondfile
 
@@ -471,9 +491,18 @@ test_expect_success 'disambiguation (4)' '
        >secondfile &&
        git add secondfile &&
        rm -f secondfile &&
-       test_must_fail git reset -- secondfile &&
+       git reset -- secondfile &&
+       test_must_fail git diff --quiet &&
        test -z "$(git diff --cached --name-only)" &&
        test ! -f secondfile
 '
 
+test_expect_success 'reset with paths accepts tree' '
+       # for simpler tests, drop last commit containing added files
+       git reset --hard HEAD^ &&
+       git reset HEAD^^{tree} -- . &&
+       git diff --cached HEAD^ --exit-code &&
+       git diff HEAD --exit-code
+'
+
 test_done