aboutsummaryrefslogtreecommitdiff
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.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/t/t1091-sparse-checkout-builtin.sh b/t/t1091-sparse-checkout-builtin.sh
index b2da4feaef..cd0aed9975 100755
--- a/t/t1091-sparse-checkout-builtin.sh
+++ b/t/t1091-sparse-checkout-builtin.sh
@@ -817,6 +817,54 @@ test_expect_success 'cone mode clears ignored subdirectories' '
test_cmp expect out
'
+test_expect_success 'sparse-checkout deduplicates repeated cone patterns' '
+ rm -f repo/.git/info/sparse-checkout &&
+ git -C repo sparse-checkout init --cone &&
+ git -C repo sparse-checkout add --stdin <<-\EOF &&
+ foo/bar/baz
+ a/b/c
+ foo/bar/baz
+ a/b
+ EOF
+ cat >expect <<-\EOF &&
+ /*
+ !/*/
+ /a/
+ !/a/*/
+ /foo/
+ !/foo/*/
+ /foo/bar/
+ !/foo/bar/*/
+ /a/b/
+ /foo/bar/baz/
+ EOF
+ test_cmp expect repo/.git/info/sparse-checkout
+'
+
+test_expect_success 'sparse-checkout list deduplicates repeated cone patterns' '
+ rm -f repo/.git/info/sparse-checkout &&
+ git -C repo sparse-checkout init --cone &&
+ cat <<-\EOF >repo/.git/info/sparse-checkout &&
+ /*
+ !/*/
+ /a/
+ !/a/*/
+ /foo/
+ !/foo/*/
+ /foo/bar/
+ !/foo/bar/*/
+ /a/b/
+ /foo/bar/baz/
+ /foo/bar/baz/
+ EOF
+ git -C repo sparse-checkout list >actual &&
+ cat <<-\EOF >expect &&
+ a/b
+ foo/bar/baz
+ EOF
+ test_cmp expect actual
+'
+
test_expect_success 'malformed cone-mode patterns' '
git -C repo sparse-checkout init --cone &&
mkdir -p repo/foo/bar &&