[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: dfa tests: Fix test failure on mingw
From: |
Bruno Haible |
Subject: |
Re: dfa tests: Fix test failure on mingw |
Date: |
Sat, 22 Apr 2023 13:48:32 +0200 |
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 <bruno@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);