On 6/23/2023 4:31 PM, Junio C Hamano wrote:
Junio C Hamano <gitster@xxxxxxxxx> writes:
Elijah Newren <newren@xxxxxxxxx> writes:
Reviewed-by: Elijah Newren <newren@xxxxxxxxx>
Thanks for a quick review.
Unfortunately Windows does not seem to correctly detect the aborting
merge driver. Does run_command() there report process death due to
signals differently, I wonder?
https://github.com/git/git/actions/runs/5360400800/jobs/9725341775#step:6:285
shows that on Windows, aborted external merge driver is not noticed
and we happily take the auto-merged result, ouch.
I am tempted to protect this step of the test with a prerequisite to
skip it on Windows for now. Anybody with better idea?
Thanks.
I would suggest putting in the correct test harness on Windows. abort()
doesn't work very well.
(Sample code only--read description below)
#ifdef WIN32
TerminateProcess(GetCurrentProcess(), 131); /* something that looks
like it passes the test */
TerminateProcess(GetCurrentProcess(), 0x80070485); /* actual exit
code for process that cannot start because its missing a shared library */
#else
abort();
#endif
I only want to fight so hard with the Unix to Windows translation layer
you use. Strictly speaking, the second TerminateProcess() line is what
should be in the test harness, but if it doesn't work go with the first
one. Then I at least have something to work with.
I'm not going to lie to you. We are doing development on Windows, and
the merge driver is written using a different portability layer. I am
prepared to build a native shim to make it work if I have to. I am not
in a position where I can build git and test any development code;
getting the fix to us will be a long journey.