sparse-checkout: improve OS ls compatibility
On FreeBSD, when executed by root ls enables the '-A' option: -A Include directory entries whose names begin with a dot (`.') except for . and ... Automatically set for the super-user unless -I is specified. As a result the .git directory appeared in the output when run as root. Simulate no-dotfile ls behaviour using a shell glob. Helped-by: Eric Wong <e@80x24.org> Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Ed Maste <emaste@FreeBSD.org> Acked-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
190a65f9db
commit
761e3d26bb
|
@ -4,6 +4,14 @@ test_description='sparse checkout builtin tests'
|
||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
list_files() {
|
||||||
|
# Do not replace this with 'ls "$1"', as "ls" with BSD-lineage
|
||||||
|
# enables "-A" by default for root and ends up including ".git" and
|
||||||
|
# such in its output. (Note, though, that running the test suite as
|
||||||
|
# root is generally not recommended.)
|
||||||
|
(cd "$1" && printf '%s\n' *)
|
||||||
|
}
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
git init repo &&
|
git init repo &&
|
||||||
(
|
(
|
||||||
|
@ -50,7 +58,7 @@ test_expect_success 'git sparse-checkout init' '
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect repo/.git/info/sparse-checkout &&
|
test_cmp expect repo/.git/info/sparse-checkout &&
|
||||||
test_cmp_config -C repo true core.sparsecheckout &&
|
test_cmp_config -C repo true core.sparsecheckout &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
echo a >expect &&
|
echo a >expect &&
|
||||||
test_cmp expect dir
|
test_cmp expect dir
|
||||||
'
|
'
|
||||||
|
@ -73,7 +81,7 @@ test_expect_success 'init with existing sparse-checkout' '
|
||||||
*folder*
|
*folder*
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect repo/.git/info/sparse-checkout &&
|
test_cmp expect repo/.git/info/sparse-checkout &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
folder1
|
folder1
|
||||||
|
@ -90,7 +98,7 @@ test_expect_success 'clone --sparse' '
|
||||||
!/*/
|
!/*/
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect actual &&
|
test_cmp expect actual &&
|
||||||
ls clone >dir &&
|
list_files clone >dir &&
|
||||||
echo a >expect &&
|
echo a >expect &&
|
||||||
test_cmp expect dir
|
test_cmp expect dir
|
||||||
'
|
'
|
||||||
|
@ -119,7 +127,7 @@ test_expect_success 'set sparse-checkout using builtin' '
|
||||||
git -C repo sparse-checkout list >actual &&
|
git -C repo sparse-checkout list >actual &&
|
||||||
test_cmp expect actual &&
|
test_cmp expect actual &&
|
||||||
test_cmp expect repo/.git/info/sparse-checkout &&
|
test_cmp expect repo/.git/info/sparse-checkout &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
folder1
|
folder1
|
||||||
|
@ -139,7 +147,7 @@ test_expect_success 'set sparse-checkout using --stdin' '
|
||||||
git -C repo sparse-checkout list >actual &&
|
git -C repo sparse-checkout list >actual &&
|
||||||
test_cmp expect actual &&
|
test_cmp expect actual &&
|
||||||
test_cmp expect repo/.git/info/sparse-checkout &&
|
test_cmp expect repo/.git/info/sparse-checkout &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
folder1
|
folder1
|
||||||
|
@ -154,7 +162,7 @@ test_expect_success 'cone mode: match patterns' '
|
||||||
git -C repo read-tree -mu HEAD 2>err &&
|
git -C repo read-tree -mu HEAD 2>err &&
|
||||||
test_i18ngrep ! "disabling cone patterns" err &&
|
test_i18ngrep ! "disabling cone patterns" err &&
|
||||||
git -C repo reset --hard &&
|
git -C repo reset --hard &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
folder1
|
folder1
|
||||||
|
@ -177,7 +185,7 @@ test_expect_success 'sparse-checkout disable' '
|
||||||
test_path_is_file repo/.git/info/sparse-checkout &&
|
test_path_is_file repo/.git/info/sparse-checkout &&
|
||||||
git -C repo config --list >config &&
|
git -C repo config --list >config &&
|
||||||
test_must_fail git config core.sparseCheckout &&
|
test_must_fail git config core.sparseCheckout &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
deep
|
deep
|
||||||
|
@ -191,24 +199,24 @@ test_expect_success 'cone mode: init and set' '
|
||||||
git -C repo sparse-checkout init --cone &&
|
git -C repo sparse-checkout init --cone &&
|
||||||
git -C repo config --list >config &&
|
git -C repo config --list >config &&
|
||||||
test_i18ngrep "core.sparsecheckoutcone=true" config &&
|
test_i18ngrep "core.sparsecheckoutcone=true" config &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
echo a >expect &&
|
echo a >expect &&
|
||||||
test_cmp expect dir &&
|
test_cmp expect dir &&
|
||||||
git -C repo sparse-checkout set deep/deeper1/deepest/ 2>err &&
|
git -C repo sparse-checkout set deep/deeper1/deepest/ 2>err &&
|
||||||
test_must_be_empty err &&
|
test_must_be_empty err &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
deep
|
deep
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect dir &&
|
test_cmp expect dir &&
|
||||||
ls repo/deep >dir &&
|
list_files repo/deep >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
deeper1
|
deeper1
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect dir &&
|
test_cmp expect dir &&
|
||||||
ls repo/deep/deeper1 >dir &&
|
list_files repo/deep/deeper1 >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
deepest
|
deepest
|
||||||
|
@ -234,7 +242,7 @@ test_expect_success 'cone mode: init and set' '
|
||||||
folder1
|
folder1
|
||||||
folder2
|
folder2
|
||||||
EOF
|
EOF
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
test_cmp expect dir
|
test_cmp expect dir
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -256,7 +264,7 @@ test_expect_success 'revert to old sparse-checkout on bad update' '
|
||||||
test_must_fail git -C repo sparse-checkout set deep/deeper1 2>err &&
|
test_must_fail git -C repo sparse-checkout set deep/deeper1 2>err &&
|
||||||
test_i18ngrep "cannot set sparse-checkout patterns" err &&
|
test_i18ngrep "cannot set sparse-checkout patterns" err &&
|
||||||
test_cmp repo/.git/info/sparse-checkout expect &&
|
test_cmp repo/.git/info/sparse-checkout expect &&
|
||||||
ls repo/deep >dir &&
|
list_files repo/deep >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
deeper1
|
deeper1
|
||||||
|
@ -313,7 +321,7 @@ test_expect_success 'cone mode: set with core.ignoreCase=true' '
|
||||||
/folder1/
|
/folder1/
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect repo/.git/info/sparse-checkout &&
|
test_cmp expect repo/.git/info/sparse-checkout &&
|
||||||
ls repo >dir &&
|
list_files repo >dir &&
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
a
|
a
|
||||||
folder1
|
folder1
|
||||||
|
|
Loading…
Reference in New Issue