Elijah Newren <newren@xxxxxxxxx> writes: >> My only comment on the test case is to see if you could use >> the "check_files" macro instead of "ls". See 761e3d26 >> (sparse-checkout: improve OS ls compatibility, 2019-12-20) >> for details. > > I attempted to do so initially, but that function fails badly when > there are no files (other than the "hidden" files '.git', '.', and > '..') in the directory. The reason for this comes from the "printf > '%s\n' *" -- the glob won't match anything and so it prints a literal > asterisk, which is not helpful. > > I thought about writing an asterisk out to the expected file for > comparison, but that just made the testcase look confusing. Maybe. It is clear that the implementation ignores the possibility that it can be asked to check for an empty directory. 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' *) } The comment does not even talk about the possibility that glob '*' may fail to glob anything. Instead of letting the macro spend an extra subprocess, using ls ourselves but in a bit more defensive way would help? I.e. ... # nothing checked out, expect "No such file or directory" ! ls clone_no_checkout/* >actual && test_must_be_empty actual test_path_is_missing clone_no_checkout/.git/index ...