git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/1] t/test-lib: make `test_dir_is_empty` more robust

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Aug 5, 2018, 05:23 UTC
Message-ID
<CAPig+cQSryjWrFZML_g0fR5oq6dzVaWPXm_4R-Jg_ay1R2DzbQ@mail.gmail.com>
In-Reply-To
<20180805041956.GI258270@aiede.svl.corp.google.com>
On Sun, Aug 5, 2018 at 12:20 AM Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 16 quoted lines
> William Chargin wrote:
> >  test_dir_is_empty () {
> >       test_path_is_dir "$1" &&
> > -     if test -n "$(ls -a1 "$1" | egrep -v '^\.\.?$')"
> > +     if test "$(ls -A1 "$1" | wc -c)" != 0
>
> Another portability gotcha: wc output includes a space on Mac so this
> test would always return true there.  How about
>
>         if test -n "$(ls -A1 "$1")"
>
> "ls -A" was added in POSIX.1-2017. [...]
> That's very recent, but the widespread implementation it mentions is
> less so.  This would be our first use of "ls -A", so I'd be interested
> to hear from people on more obscure platforms.  It does seem to be
> widespread.

A simpler approach, without the portability concerns of -A, would be to remove the "." and ".." lines from the top of the listing:

    ls -f1 "$1" | sed '1,2d'

If we're worried about -f not being sufficiently portable, then an even simpler approach would be to check whether the output of 'ls -a1' has more lines than the two expected ("." and ".."):

    test $(ls -a1 "$1" | wc -l) -gt 2
I think I favor this final implementation over the others.
Previous: Jonathan NiederNext: Jeff King
Message 4 of 23 in “t/test-lib: make `test_dir_is_empty` more robust”
  1. 0/1 t/test-lib: make `test_dir_is_empty` more robustWilliam Chargin, Aug 5, 2018
  2. 1/1 t/test-lib: make `test_dir_is_empty` more robustWilliam Chargin, Aug 5, 2018
  3. Jonathan NiederAug 5, 2018
  4. Eric SunshineAug 5, 2018
  5. Jeff KingAug 5, 2018
  6. Jeff KingAug 6, 2018
  7. Eric SunshineAug 6, 2018
  8. William CharginAug 12, 2018
  9. test_dir_is_empty: properly detect files with newline in nameWilliam Chargin, Aug 12, 2018
  10. Eric SunshineAug 12, 2018
  11. William CharginAug 12, 2018
  12. Eric SunshineAug 12, 2018
  13. test_dir_is_empty: fix edge cases with newlines and hyphensWilliam Chargin, Sep 12, 2018
  14. Junio C HamanoSep 12, 2018
  15. test_dir_is_empty: fix edge cases with newlines and hyphensWilliam Chargin, Sep 12, 2018
  16. William CharginAug 5, 2018
  17. Jonathan NiederAug 5, 2018
  18. Junio C HamanoAug 5, 2018
  19. Jonathan NiederAug 5, 2018
  20. Jonathan NiederAug 5, 2018
  21. William CharginAug 5, 2018
  22. t/test-lib: make `test_dir_is_empty` more robustWilliam Chargin, Aug 5, 2018
  23. Johannes SixtAug 5, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.