Am 30.01.21 um 09:29 schrieb Johannes Sixt: > Am 30.01.21 um 00:48 schrieb Denton Liu: >> +++ b/t/helper/test-pager.c >> @@ -0,0 +1,12 @@ >> +#include "test-tool.h" >> +#include "cache.h" >> + >> +int cmd__pager(int argc, const char **argv) >> +{ >> + if (argc > 1) >> + usage("\ttest-tool pager"); >> + >> + setup_pager(); >> + for (;;) >> + puts("y"); >> +} > > My gut feeling tells that this will end in an infinite loop on Windows. > There are no signals on Windows that would kill the upstream of a pipe. > This call site will only notice that the downstream of the pipe was > closed, when it checks for write errors. > > Let me test it. The test case is protected by a TTY prerequisite; that is not satisfied on Windows, and the test is skipped. No harm done so far. But when I run `test-tool pager` manually and quit out of the pager, the tool does spin in the endless loop. The following fixup helps. diff --git a/t/helper/test-pager.c b/t/helper/test-pager.c index feb68b8643..5f1982411f 100644 --- a/t/helper/test-pager.c +++ b/t/helper/test-pager.c @@ -7,6 +7,8 @@ int cmd__pager(int argc, const char **argv) usage("\ttest-tool pager"); setup_pager(); - for (;;) - puts("y"); + while (write_in_full(1, "y\n", 2) > 0) + ; + + return 0; } -- 2.30.0.119.g680bcb97f5