aboutsummaryrefslogtreecommitdiffstats
path: root/t/t1091-sparse-checkout-builtin.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/t1091-sparse-checkout-builtin.sh')
-rwxr-xr-xt/t1091-sparse-checkout-builtin.sh54
1 files changed, 53 insertions, 1 deletions
diff --git a/t/t1091-sparse-checkout-builtin.sh b/t/t1091-sparse-checkout-builtin.sh
index bdb7b21e32..e6b768a8da 100755
--- a/t/t1091-sparse-checkout-builtin.sh
+++ b/t/t1091-sparse-checkout-builtin.sh
@@ -1059,12 +1059,29 @@ test_expect_success 'clean' '
touch repo/deep/deeper2/file &&
touch repo/folder1/file &&
+ test_must_fail git -C repo sparse-checkout clean 2>err &&
+ grep "refusing to clean" err &&
+
+ git -C repo config clean.requireForce true &&
+ test_must_fail git -C repo sparse-checkout clean 2>err &&
+ grep "refusing to clean" err &&
+
+ cat >expect <<-\EOF &&
+ Would remove deep/deeper2/
+ Would remove folder1/
+ EOF
+
+ git -C repo sparse-checkout clean --dry-run >out &&
+ test_cmp expect out &&
+ test_path_exists repo/deep/deeper2 &&
+ test_path_exists repo/folder1 &&
+
cat >expect <<-\EOF &&
Removing deep/deeper2/
Removing folder1/
EOF
- git -C repo sparse-checkout clean >out &&
+ git -C repo sparse-checkout clean -f >out &&
test_cmp expect out &&
test_path_is_missing repo/deep/deeper2 &&
@@ -1076,6 +1093,10 @@ test_expect_success 'clean with sparse file states' '
git -C repo sparse-checkout set --cone deep/deeper1 &&
mkdir repo/folder2 &&
+ # The previous test case checked the -f option, so
+ # test the config option in this one.
+ git -C repo config clean.requireForce false &&
+
# create an untracked file and a modified file
touch repo/folder2/file &&
echo dirty >repo/folder2/a &&
@@ -1154,4 +1175,35 @@ test_expect_success 'clean with sparse file states' '
test_must_be_empty out
'
+test_expect_success 'clean with merge conflict status' '
+ git clone repo clean-merge &&
+
+ echo dirty >clean-merge/deep/deeper2/a &&
+ touch clean-merge/folder2/extra &&
+
+ cat >input <<-EOF &&
+ 0 $ZERO_OID folder1/a
+ 100644 $(git -C clean-merge rev-parse HEAD:folder1/a) 1 folder1/a
+ EOF
+ git -C clean-merge update-index --index-info <input &&
+
+ git -C clean-merge sparse-checkout set deep/deeper1 &&
+
+ test_must_fail git -C clean-merge sparse-checkout clean -f 2>err &&
+ grep "failed to convert index to a sparse index" err &&
+
+ mkdir -p clean-merge/folder1/ &&
+ echo merged >clean-merge/folder1/a &&
+ git -C clean-merge add --sparse folder1/a &&
+
+ # deletes folder2/ but leaves staged change in folder1
+ # and dirty change in deep/deeper2/
+ cat >expect <<-\EOF &&
+ Removing folder2/
+ EOF
+
+ git -C clean-merge sparse-checkout clean -f >out &&
+ test_cmp expect out
+'
+
test_done