I wrote: > > Is there some way we can instead compile or run MinGW apps so that they > > instead follow the POSIX LF convention? > > Sure. Instead of the change above, I can alternatively add a > set_binary_mode (STDOUT_FILENO, O_BINARY); > call to the C program.
Done: 2023-04-22 Bruno Haible <br...@clisp.org> dfa tests: Fix test failure on mingw differently. Suggested by Paul Eggert. * tests/test-dfa-invalid-char-class.sh: Revert last change. * tests/test-dfa-match-aux.c: Include binary-io.h. (main): Put stdout into binary mode. * modules/dfa-tests (Depends-on): Add binary-io. diff --git a/modules/dfa-tests b/modules/dfa-tests index afa317acdf..c4585fdf45 100644 --- a/modules/dfa-tests +++ b/modules/dfa-tests @@ -5,6 +5,7 @@ tests/test-dfa-invalid-char-class.sh tests/test-dfa-invalid-merge.sh Depends-on: +binary-io stdio stdlib string diff --git a/tests/test-dfa-invalid-char-class.sh b/tests/test-dfa-invalid-char-class.sh index b9b18980b6..1428d7966a 100755 --- a/tests/test-dfa-invalid-char-class.sh +++ b/tests/test-dfa-invalid-char-class.sh @@ -24,8 +24,7 @@ path_prepend_ . fail=0 echo 'dfaerror: invalid character class' > exp -LC_ALL=C ${CHECKER} test-dfa-match-aux '[[:foo:]]' a > tmp 2>&1 -LC_ALL=C tr -d '\r' < tmp > out +LC_ALL=C ${CHECKER} test-dfa-match-aux '[[:foo:]]' a > out 2>&1 compare exp out || fail=1 Exit $fail diff --git a/tests/test-dfa-match-aux.c b/tests/test-dfa-match-aux.c index b39bb6da86..cef29e6a83 100644 --- a/tests/test-dfa-match-aux.c +++ b/tests/test-dfa-match-aux.c @@ -26,6 +26,8 @@ #include <dfa.h> #include <localeinfo.h> +#include "binary-io.h" + _Noreturn void dfaerror (char const *mesg) { @@ -53,6 +55,11 @@ main (int argc, char **argv) if (argc < 3) exit (EXIT_FAILURE); + /* This test's fixture needs to compare this program's output with an expected + output. On native Windows, the CR-LF newlines would cause this comparison + to fail. But we don't want to postprocess this program's output. */ + set_binary_mode (STDOUT_FILENO, O_BINARY); + setlocale (LC_ALL, ""); init_localeinfo (&localeinfo);