about summary refs log tree commit diff
path: root/third_party/git/t/t2070-restore.sh
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/t/t2070-restore.sh')
-rwxr-xr-xthird_party/git/t/t2070-restore.sh28
1 files changed, 28 insertions, 0 deletions
diff --git a/third_party/git/t/t2070-restore.sh b/third_party/git/t/t2070-restore.sh
index 2650df1966..076d0df7fc 100755
--- a/third_party/git/t/t2070-restore.sh
+++ b/third_party/git/t/t2070-restore.sh
@@ -95,4 +95,32 @@ test_expect_success 'restore --ignore-unmerged ignores unmerged entries' '
 	)
 '
 
+test_expect_success 'restore --staged adds deleted intent-to-add file back to index' '
+	echo "nonempty" >nonempty &&
+	>empty &&
+	git add nonempty empty &&
+	git commit -m "create files to be deleted" &&
+	git rm --cached nonempty empty &&
+	git add -N nonempty empty &&
+	git restore --staged nonempty empty &&
+	git diff --cached --exit-code
+'
+
+test_expect_success 'restore --staged invalidates cache tree for deletions' '
+	test_when_finished git reset --hard &&
+	>new1 &&
+	>new2 &&
+	git add new1 new2 &&
+
+	# It is important to commit and then reset here, so that the index
+	# contains a valid cache-tree for the "both" tree.
+	git commit -m both &&
+	git reset --soft HEAD^ &&
+
+	git restore --staged new1 &&
+	git commit -m "just new2" &&
+	git rev-parse HEAD:new2 &&
+	test_must_fail git rev-parse HEAD:new1
+'
+
 test_done