On 12/18/2019 8:58 PM, Ed Maste wrote: Thanks for the report! It was a little unclear from the get-go what exactly the issue is. > 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. It appears that the "ls" commands in the sparse-checkout tests are reporting the ".git" directory when executed on FreeBSD as root. Is this only as root? > Pipe ls's output to grep -v .git to remove the undesired entry. Also > pass the -1 option to ensure one entry per line. What if we instead ran "ls -a" and added .git to our expected output (when appropriate)? Would that be simpler (and reduce the process count that this solution introduces). Thanks, -Stolee > Signed-off-by: Ed Maste <emaste@xxxxxxxxxxx> > --- > There are several different ways this could be solved; this approach > felt cleanest to me, but there are at least two other reasonable > alternatives: > > * Add -a to the invocations and .git to the expected output > > * Add LSFLAGS and set it to -I on BSDs, to turn off the special dot > behaviour > > I'll submit a new patch if a different approach is preferred. > > t/t1091-sparse-checkout-builtin.sh | 33 +++++++++++++++++------------- > 1 file changed, 19 insertions(+), 14 deletions(-) > > diff --git a/t/t1091-sparse-checkout-builtin.sh b/t/t1091-sparse-checkout-builtin.sh > index cee98a1c8a..3a3eafa653 100755 > --- a/t/t1091-sparse-checkout-builtin.sh > +++ b/t/t1091-sparse-checkout-builtin.sh > @@ -4,6 +4,11 @@ test_description='sparse checkout builtin tests' > > . ./test-lib.sh > > +ls_no_git() > +{ > + ls -1 "$1" | grep -v .git > +} > + > test_expect_success 'setup' ' > git init repo && > ( > @@ -50,7 +55,7 @@ test_expect_success 'git sparse-checkout init' ' > EOF > test_cmp expect repo/.git/info/sparse-checkout && > test_cmp_config -C repo true core.sparsecheckout && > - ls repo >dir && > + ls_no_git repo >dir && > echo a >expect && > test_cmp expect dir > ' > @@ -73,7 +78,7 @@ test_expect_success 'init with existing sparse-checkout' ' > *folder* > EOF > test_cmp expect repo/.git/info/sparse-checkout && > - ls repo >dir && > + ls_no_git repo >dir && > cat >expect <<-EOF && > a > folder1 > @@ -90,7 +95,7 @@ test_expect_success 'clone --sparse' ' > !/*/ > EOF > test_cmp expect actual && > - ls clone >dir && > + ls_no_git clone >dir && > echo a >expect && > test_cmp expect dir > ' > @@ -119,7 +124,7 @@ test_expect_success 'set sparse-checkout using builtin' ' > git -C repo sparse-checkout list >actual && > test_cmp expect actual && > test_cmp expect repo/.git/info/sparse-checkout && > - ls repo >dir && > + ls_no_git repo >dir && > cat >expect <<-EOF && > a > folder1 > @@ -139,7 +144,7 @@ test_expect_success 'set sparse-checkout using --stdin' ' > git -C repo sparse-checkout list >actual && > test_cmp expect actual && > test_cmp expect repo/.git/info/sparse-checkout && > - ls repo >dir && > + ls_no_git repo >dir && > cat >expect <<-EOF && > a > folder1 > @@ -154,7 +159,7 @@ test_expect_success 'cone mode: match patterns' ' > git -C repo read-tree -mu HEAD 2>err && > test_i18ngrep ! "disabling cone patterns" err && > git -C repo reset --hard && > - ls repo >dir && > + ls_no_git repo >dir && > cat >expect <<-EOF && > a > folder1 > @@ -177,7 +182,7 @@ test_expect_success 'sparse-checkout disable' ' > test_path_is_file repo/.git/info/sparse-checkout && > git -C repo config --list >config && > test_must_fail git config core.sparseCheckout && > - ls repo >dir && > + ls_no_git repo >dir && > cat >expect <<-EOF && > a > deep > @@ -191,24 +196,24 @@ test_expect_success 'cone mode: init and set' ' > git -C repo sparse-checkout init --cone && > git -C repo config --list >config && > test_i18ngrep "core.sparsecheckoutcone=true" config && > - ls repo >dir && > + ls_no_git repo >dir && > echo a >expect && > test_cmp expect dir && > git -C repo sparse-checkout set deep/deeper1/deepest/ 2>err && > test_must_be_empty err && > - ls repo >dir && > + ls_no_git repo >dir && > cat >expect <<-EOF && > a > deep > EOF > test_cmp expect dir && > - ls repo/deep >dir && > + ls_no_git repo/deep >dir && > cat >expect <<-EOF && > a > deeper1 > EOF > test_cmp expect dir && > - ls repo/deep/deeper1 >dir && > + ls_no_git repo/deep/deeper1 >dir && > cat >expect <<-EOF && > a > deepest > @@ -234,7 +239,7 @@ test_expect_success 'cone mode: init and set' ' > folder1 > folder2 > EOF > - ls repo >dir && > + ls_no_git repo >dir && > test_cmp expect dir > ' > > @@ -256,7 +261,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_i18ngrep "cannot set sparse-checkout patterns" err && > test_cmp repo/.git/info/sparse-checkout expect && > - ls repo/deep >dir && > + ls_no_git repo/deep >dir && > cat >expect <<-EOF && > a > deeper1 > @@ -313,7 +318,7 @@ test_expect_success 'cone mode: set with core.ignoreCase=true' ' > /folder1/ > EOF > test_cmp expect repo/.git/info/sparse-checkout && > - ls repo >dir && > + ls_no_git repo >dir && > cat >expect <<-EOF && > a > folder1 >