diff options
Diffstat (limited to 't/t1091-sparse-checkout-builtin.sh')
| -rwxr-xr-x | t/t1091-sparse-checkout-builtin.sh | 54 |
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 |
