On mingw 10, I see this test failure: FAIL: test-string-desc.sh =========================
../../gltests/test-string-desc.c:113: assertion 'string_desc_write (3, s1) == 0' failed FAIL test-string-desc.sh (exit status: 1) Apparently, in the Cygwin environment, it is not possible to pass an open file descriptor ≥ 3 from the Cygwin bash to a mingw program. This patch fixes it. 2023-04-22 Bruno Haible <br...@clisp.org> string-desc tests: Avoid test failure on native Windows. * tests/test-string-desc.c: Include <fcntl.h>, <unistd.h>. (main): Expect a file name argument. Write to this file, instead of to fd 3. * tests/test-string-desc.sh: Pass a file name as argument, instead of using '3>'. * modules/string-desc-tests (Depends-on): Add close. diff --git a/modules/string-desc-tests b/modules/string-desc-tests index d7923c3a60..687d4e2af2 100644 --- a/modules/string-desc-tests +++ b/modules/string-desc-tests @@ -4,6 +4,7 @@ tests/test-string-desc.c tests/macros.h Depends-on: +close configure.ac: diff --git a/tests/test-string-desc.c b/tests/test-string-desc.c index 53aeb68743..042e6cb6a9 100644 --- a/tests/test-string-desc.c +++ b/tests/test-string-desc.c @@ -20,14 +20,20 @@ #include "string-desc.h" +#include <fcntl.h> #include <stdlib.h> #include <string.h> +#include <unistd.h> #include "macros.h" int -main (void) +main (int argc, char *argv[]) { + ASSERT (argc > 1); + int fd3 = open (argv[1], O_RDWR | O_TRUNC | O_CREAT, 0600); + ASSERT (fd3 >= 0); + string_desc_t s0 = string_desc_new_empty (); string_desc_t s1 = string_desc_from_c ("Hello world!"); string_desc_t s2 = string_desc_new_addr (21, "The\0quick\0brown\0\0fox"); @@ -109,9 +115,9 @@ main (void) string_desc_from_c ("llo")) == 0); /* Test string_desc_write. */ - ASSERT (string_desc_write (3, s0) == 0); - ASSERT (string_desc_write (3, s1) == 0); - ASSERT (string_desc_write (3, s2) == 0); + ASSERT (string_desc_write (fd3, s0) == 0); + ASSERT (string_desc_write (fd3, s1) == 0); + ASSERT (string_desc_write (fd3, s2) == 0); /* Test string_desc_fwrite. */ ASSERT (string_desc_fwrite (stdout, s0) == 0); @@ -182,5 +188,7 @@ main (void) free (ptr); } + close (fd3); + return 0; } diff --git a/tests/test-string-desc.sh b/tests/test-string-desc.sh index 57f0e2371b..a4d92792eb 100755 --- a/tests/test-string-desc.sh +++ b/tests/test-string-desc.sh @@ -1,7 +1,7 @@ #!/bin/sh . "${srcdir=.}/init.sh"; path_prepend_ . -${CHECKER} test-string-desc${EXEEXT} > test-string-desc-1.tmp 3> test-string-desc-3.tmp || Exit 1 +${CHECKER} test-string-desc${EXEEXT} test-string-desc-3.tmp > test-string-desc-1.tmp || Exit 1 printf 'Hello world!The\0quick\0brown\0\0fox\0' > test-string-desc.ok