On Thu, Apr 13, 2017 at 12:31:38PM +0200, SZEDER Gábor wrote: > Note, that this fd trickery doesn't work on Windows, because due to > MSYS limitations the git process only inherits the standard fds 0, 1 > and 2 from the shell. Luckily, it doesn't matter in this case, > because on Windows daemonize() is basically a noop, thus 'git gc > --auto' always runs in the foreground. > > And since we can now continue the test reliably after the detached gc > finished, check that there is only a single packfile left at the end, > i.e. that the detached gc actually did what it was supposed to do. > Also add a comment at the end of the test script to warn developers of > future tests about this issue of long running detached gc processes. The whole thing looks nicely explained, and I'm happy that we're able to reliably add this extra check at the end of the test. I did wonder what will happen if Windows learns to daemonize() the auto-gc. I don't think we'll get an immediate test failure, but this test will become racy again. But this time we'll actually notice the racy failure, because the "ls" will report extra packs if it runs before the background gc does. At which point we can revisit this. It would be nice if there were a non-racy way to detect whether we daemonized or not, and complain on Windows when we do. Then we'll be notified immediately when daemonize() changes by the test failure, rather than waiting for a racy failure. I guess we could probably grep for the "in the background" message from the parent gc. OTOH, maybe it is not even worth it. The racy version should fail reasonably promptly, I think, and the comments you've left would point any investigator in the right direction. -Peff