On Tue, Dec 17, 2013 at 6:54 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Samuel Bronson <naesten@xxxxxxxxx> writes: > >> On Mon, Dec 16, 2013 at 4:32 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: >>> Samuel Bronson <naesten@xxxxxxxxx> writes: >>> >>>> for i in 1 2 >>>> do >>>> test_expect_success "orderfile using option ($i)" ' >>>> git diff -Oorder_file_$i --name-only HEAD^..HEAD >actual && >>>> test_cmp expect_$i actual >>>> ' >>> >>> This funny indentation in the previous step needs to be fixed, and >>> the added block below should match. >> >> Even though this results in oddly-indented --verbose output? >> >>>> + rm -f order_fifo && >>>> + mkfifo order_fifo && >>>> + cat order_file_$i >order_fifo & >>>> + git diff -O order_fifo --name-only HEAD^..HEAD >actual && >>> >>> I think this part can be racy depending on which between cat and >>> "git diff" are scheduled first, no? Try running this test under >>> load and I think you will see it deadlocked. >>> >>> Besides, the above breaks && chain; even if mkfifo breaks (hence not >>> allowing cat to run), "git diff" will go ahead and run, no? >> >> Hmm. Well, what I really wanted to put here was a "process substitution": >> >> git diff -O <(cat order_file_$i) --name-only HEAD^..HEAD >actual && >> >> but I did not see this feature listed in the dash(1) manpage, so I >> assumed it wasn't allowed by POSIX. And, having looked, I indeed >> don't see it mentioned in POSIX either. >> >> I'm not terribly surprised that I screwed up the translation to FIFOs; >> how would I really want to do it? > > How about not doing a fifo? That would certainly defeat the purpose of the test, which is to test against a fifo :-) I'm not sure about the deadlock though. Both read and write will wait for each other to start operating on the fifo. You can probably fix the &&-chain by doing something like: mkfifo order_fifo && { cat order_file_$i >order_fifo & git diff -O order_fifo --name-only HEAD^..HEAD >actual } && ... Also, "rm -f order_fifo" should probably be done in test_when_finished rather than at the beginning of the test. Antoine, -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html