Code

reset [<commit>] paths...: do not mishandle unmerged paths
[git.git] / t / t1005-read-tree-reset.sh
index b0d31f5a9bb8b3474665147327d94ad5067fa206..f53de79e565afcbe53a016a56a59b27831a3ce42 100755 (executable)
@@ -3,6 +3,7 @@
 test_description='read-tree -u --reset'
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-read-tree.sh
 
 # two-tree test
 
@@ -22,9 +23,69 @@ test_expect_success 'setup' '
 '
 
 test_expect_success 'reset should work' '
-  git read-tree -u --reset HEAD^ &&
+  read_tree_u_must_succeed -u --reset HEAD^ &&
   git ls-files >actual &&
   test_cmp expect actual
 '
 
+test_expect_success 'reset should remove remnants from a failed merge' '
+  read_tree_u_must_succeed --reset -u HEAD &&
+  git ls-files -s >expect &&
+  sha1=$(git rev-parse :new) &&
+  (
+       echo "100644 $sha1 1    old"
+       echo "100644 $sha1 3    old"
+  ) | git update-index --index-info &&
+  >old &&
+  git ls-files -s &&
+  read_tree_u_must_succeed --reset -u HEAD &&
+  git ls-files -s >actual &&
+  ! test -f old
+'
+
+test_expect_success 'Porcelain reset should remove remnants too' '
+  read_tree_u_must_succeed --reset -u HEAD &&
+  git ls-files -s >expect &&
+  sha1=$(git rev-parse :new) &&
+  (
+       echo "100644 $sha1 1    old"
+       echo "100644 $sha1 3    old"
+  ) | git update-index --index-info &&
+  >old &&
+  git ls-files -s &&
+  git reset --hard &&
+  git ls-files -s >actual &&
+  ! test -f old
+'
+
+test_expect_success 'Porcelain checkout -f should remove remnants too' '
+  read_tree_u_must_succeed --reset -u HEAD &&
+  git ls-files -s >expect &&
+  sha1=$(git rev-parse :new) &&
+  (
+       echo "100644 $sha1 1    old"
+       echo "100644 $sha1 3    old"
+  ) | git update-index --index-info &&
+  >old &&
+  git ls-files -s &&
+  git checkout -f &&
+  git ls-files -s >actual &&
+  ! test -f old
+'
+
+test_expect_success 'Porcelain checkout -f HEAD should remove remnants too' '
+  read_tree_u_must_succeed --reset -u HEAD &&
+  git ls-files -s >expect &&
+  sha1=$(git rev-parse :new) &&
+  (
+       echo "100644 $sha1 1    old"
+       echo "100644 $sha1 3    old"
+  ) | git update-index --index-info &&
+  >old &&
+  git ls-files -s &&
+  git checkout -f HEAD &&
+  git ls-files -s >actual &&
+  ! test -f old
+'
+
 test_done