On Mon, 2022-09-26 at 20:23 +0300, Eli Zaretskii wrote: > The following tests should be disabled on MS-Windows, because they > cannot possibly work:
I have access to a VM running Windows 10 with a relatively recent Visual Studio install, with a recent Perl, and with the Git for Windows binaries (from MinGW I assume) on my PATH. No other cygwin or MinGW. In this environment I can do this (in a Windows cmd.exe shell): tar xzf make-4.3.90.tar.gz cd make-4.3.90 .\build_w32.bat .\WinRel\gnumake.exe check This builds with Visual Studio and I get zero test failures. I assume a big part of this is that make is choosing bash as its shell, from the Git for Windows install, not cmd.exe. Plus other POSIX tools are available. > . 1 test in misc/bs-nl that uses single quotes around newlines > . 1 test in misc/general3 that uses single quotes around newlines > . 1 test in misc/general4 that unsets PATH (this cannot work on > Windows because Make will be unable to find the DLLs against which > it was linked, so it fails to start without valid PATH) > . targets/ONESHELL in its entirety (this feature doesn't work on > Windows) I assume most/all of the above really mean, these tests won't work on Windows when make uses a Windows shell such as cmd.exe. Maybe we need to add a new check to the test framework that sets a variable depending on what kind of shell make is using, then this variable should be used when deciding which tests to run rather than using "are we on Windows or not". > . targets/POSIX in its entirety The .POSIX: special target tells make that it should modify its behavior to conform to the POSIX specification of make, in places where it might differ by default. This happens on Windows the same as on non-Windows. Some of those behaviors might require a real POSIX system to test but I'm not sure all of them do. I might be wrong though.