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

Re: [PATCH v2 4/5] check-ignore: allow incremental streaming of queries via --stdin

From
Adam Spiers <git@adamspiers.org>
Date
Apr 11, 2013, 20:31 UTC
Message-ID
<20130411203141.GB21091@pacific.linksys.moosehall>
In-Reply-To
<20130411191132.GC3177@sigill.intra.peff.net>
On Thu, Apr 11, 2013 at 03:11:32PM -0400, Jeff King wrote:
Show 6 quoted lines
> I always get a little nervous with sleeps in the test suite, as they are
> indicative that we are trying to avoid some race condition, which means
> that the test can fail when the system is under load, or when a tool
> like valgrind is used which drastically alters the timing (e.g., if
> check-ignore takes longer than 1 second to produce its answer, we may
> fail here).

Agreed, especially here where my btrfs filesystems see fit to kindly freeze my system for a few seconds many times each day :-/

Show 26 quoted lines
> Is there a simpler way to test this?
> 
> Like:
> 
>   # Set up a long-running "check-ignore" connected by pipes.
>   mkfifo in out &&
>   (git check-ignore ... <in >out &) &&
> 
>   # We cannot just "echo >in" because check-ignore
>   # would get EOF after echo exited; instead we open
>   # the descriptor in our shell, and then echo to the
>   # fd. We make sure to close it at the end, so that
>   # the subprocess does get EOF and dies properly.
>   exec 9>in &&
>   test_when_finished "exec 9>&-" &&
> 
>   # Now we can do interactive tests
>   echo >&9 one &&
>   read response <out &&
>   test "$response" = ... &&
>   echo >&9 two &&
>   read response <out &&
>   test "$response" = ...
> 
> Hmm. Maybe simpler wasn't the right word. :) But it avoids any sleeps or
> race conditions.
The shell source is strong with this one ;-)

Congrats - I first tried with FIFOs (hence my other patch which moves the PIPE test prerequisite definition into the core framework - the original intention was to reuse it here) but failed to get it working. I'll re-roll using your approach.

Previous: Jeff KingNext: Jeff King
Message 21 of 33 in “RFC: two minor tweaks to check-ignore to help git-annex assistant”
  1. Adam SpiersApr 8, 2013
  2. Junio C HamanoApr 8, 2013
  3. Jeff KingApr 8, 2013
  4. 1/5 check-ignore: move setup into cmd_check_ignore()Adam Spiers, Apr 11, 2013
  5. 2/5 check-ignore: allow incremental streaming of queries via --stdinAdam Spiers, Apr 11, 2013
  6. Jeff KingApr 11, 2013
  7. Adam SpiersApr 11, 2013
  8. Adam SpiersApr 11, 2013
  9. Jeff KingApr 11, 2013
  10. 3/5 Documentation: add caveats about I/O buffering for check-{attr,ignore}Adam Spiers, Apr 11, 2013
  11. Jeff KingApr 11, 2013
  12. 4/5 t0008: remove duplicated test fixture dataAdam Spiers, Apr 11, 2013
  13. 5/5 check-ignore: add -n / --non-matching optionAdam Spiers, Apr 11, 2013
  14. Jeff KingApr 11, 2013
  15. Adam SpiersApr 11, 2013
  16. 1/5 t0008: remove duplicated test fixture dataAdam Spiers, Apr 11, 2013
  17. 2/5 check-ignore: add -n / --non-matching optionAdam Spiers, Apr 11, 2013
  18. 3/5 check-ignore: move setup into cmd_check_ignore()Adam Spiers, Apr 11, 2013
  19. 4/5 check-ignore: allow incremental streaming of queries via --stdinAdam Spiers, Apr 11, 2013
  20. Jeff KingApr 11, 2013
  21. Adam SpiersApr 11, 2013
  22. Jeff KingApr 11, 2013
  23. Junio C HamanoApr 22, 2013
  24. Adam SpiersApr 24, 2013
  25. t0008: use named pipe (FIFO) to test check-ignore streamingAdam Spiers, Apr 29, 2013
  26. Aaron SchrabApr 11, 2013
  27. Adam SpiersApr 11, 2013
  28. 5/5 Documentation: add caveats about I/O buffering for check-{attr,ignore}Adam Spiers, Apr 11, 2013
  29. Junio C HamanoApr 11, 2013
  30. 5/5 Documentation: add caveats about I/O buffering for check-{attr,ignore}Adam Spiers, Apr 11, 2013
  31. Junio C HamanoApr 12, 2013
  32. Adam SpiersApr 12, 2013
  33. Jeff KingApr 11, 2013

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.