On some platforms, notably MSVC 14, the contents of the stderr output buffer
is lost when abort() is called. But we want to see relevant information in
the log files when a test program aborts.


2023-09-05  Bruno Haible  <br...@clisp.org>

        tests: Ensure stderr output is displayed before abort().
        * tests/atomic-int-gnulib.h (init_atomic_int): Call fflush(stderr)
        before abort().
        * tests/atomic-int-isoc.h (init_atomic_int): Likewise.
        * tests/atomic-int-posix.h (init_atomic_int): Likewise.
        * tests/unigbrk/test-u8-grapheme-breaks.c (test_u8_grapheme_breaks):
        Likewise.
        * tests/unigbrk/test-u16-grapheme-breaks.c (test_u16_grapheme_breaks):
        Likewise.
        * tests/unigbrk/test-u32-grapheme-breaks.c (test_u32_grapheme_breaks):
        Likewise.
        * tests/unigbrk/test-uc-grapheme-breaks.c (test_uc_grapheme_breaks):
        Likewise.
        * tests/unigbrk/test-ulc-grapheme-breaks.c (main): Likewise.
        * tests/unigbrk/test-u8-grapheme-next.c (test_u8_grapheme_next):
        Likewise.
        * tests/unigbrk/test-u16-grapheme-next.c (test_u16_grapheme_next):
        Likewise.
        * tests/unigbrk/test-u32-grapheme-next.c (test_u32_grapheme_next):
        Likewise.
        * tests/unigbrk/test-u8-grapheme-prev.c (test_u8_grapheme_prev):
        Likewise.
        * tests/unigbrk/test-u16-grapheme-prev.c (test_u16_grapheme_prev):
        Likewise.
        * tests/unigbrk/test-u32-grapheme-prev.c (test_u32_grapheme_prev):
        Likewise.

diff --git a/tests/atomic-int-gnulib.h b/tests/atomic-int-gnulib.h
index d60adc4377..bed0220de5 100644
--- a/tests/atomic-int-gnulib.h
+++ b/tests/atomic-int-gnulib.h
@@ -107,6 +107,7 @@ init_atomic_int (struct atomic_int *ai)
           else
             {
               perror ("sem_open failed");
+              fflush (stderr);
               abort ();
             }
         }
diff --git a/tests/atomic-int-isoc.h b/tests/atomic-int-isoc.h
index 19b038631e..4dbb211ddc 100644
--- a/tests/atomic-int-isoc.h
+++ b/tests/atomic-int-isoc.h
@@ -107,6 +107,7 @@ init_atomic_int (struct atomic_int *ai)
           else
             {
               perror ("sem_open failed");
+              fflush (stderr);
               abort ();
             }
         }
diff --git a/tests/atomic-int-posix.h b/tests/atomic-int-posix.h
index 844f998ff7..a85aa9d3ba 100644
--- a/tests/atomic-int-posix.h
+++ b/tests/atomic-int-posix.h
@@ -107,6 +107,7 @@ init_atomic_int (struct atomic_int *ai)
           else
             {
               perror ("sem_open failed");
+              fflush (stderr);
               abort ();
             }
         }
diff --git a/tests/unigbrk/test-u16-grapheme-breaks.c 
b/tests/unigbrk/test-u16-grapheme-breaks.c
index 7fda21f043..3f20648d37 100644
--- a/tests/unigbrk/test-u16-grapheme-breaks.c
+++ b/tests/unigbrk/test-u16-grapheme-breaks.c
@@ -74,6 +74,7 @@ test_u16_grapheme_breaks (const char *expected, ...)
           fprintf (stderr, "  %d", breaks[j]);
         putc ('\n', stderr);
 
+        fflush (stderr);
         abort ();
       }
 }
diff --git a/tests/unigbrk/test-u16-grapheme-next.c 
b/tests/unigbrk/test-u16-grapheme-next.c
index 4974b852aa..0f3c15a9d4 100644
--- a/tests/unigbrk/test-u16-grapheme-next.c
+++ b/tests/unigbrk/test-u16-grapheme-next.c
@@ -62,6 +62,7 @@ test_u16_grapheme_next (size_t len, ...)
       for (i = 0; i < n; i++)
         fprintf (stderr, " %04x", s[i]);
       putc ('\n', stderr);
+      fflush (stderr);
       abort ();
     }
 }
diff --git a/tests/unigbrk/test-u16-grapheme-prev.c 
b/tests/unigbrk/test-u16-grapheme-prev.c
index aaf93fa847..6d0260febc 100644
--- a/tests/unigbrk/test-u16-grapheme-prev.c
+++ b/tests/unigbrk/test-u16-grapheme-prev.c
@@ -64,6 +64,7 @@ test_u16_grapheme_prev (size_t len, ...)
       for (i = 0; i < n; i++)
         fprintf (stderr, " %04x", s[i]);
       putc ('\n', stderr);
+      fflush (stderr);
       abort ();
     }
 }
diff --git a/tests/unigbrk/test-u32-grapheme-breaks.c 
b/tests/unigbrk/test-u32-grapheme-breaks.c
index f01d888428..abbdababee 100644
--- a/tests/unigbrk/test-u32-grapheme-breaks.c
+++ b/tests/unigbrk/test-u32-grapheme-breaks.c
@@ -74,6 +74,7 @@ test_u32_grapheme_breaks (const char *expected, ...)
           fprintf (stderr, "  %d", breaks[j]);
         putc ('\n', stderr);
 
+        fflush (stderr);
         abort ();
       }
 }
diff --git a/tests/unigbrk/test-u32-grapheme-next.c 
b/tests/unigbrk/test-u32-grapheme-next.c
index e2ab96b4a6..447b5b9420 100644
--- a/tests/unigbrk/test-u32-grapheme-next.c
+++ b/tests/unigbrk/test-u32-grapheme-next.c
@@ -62,6 +62,7 @@ test_u32_grapheme_next (size_t len, ...)
       for (i = 0; i < n; i++)
         fprintf (stderr, " %04x", s[i]);
       putc ('\n', stderr);
+      fflush (stderr);
       abort ();
     }
 }
diff --git a/tests/unigbrk/test-u32-grapheme-prev.c 
b/tests/unigbrk/test-u32-grapheme-prev.c
index 67a8c43c2b..dd72ef5f1d 100644
--- a/tests/unigbrk/test-u32-grapheme-prev.c
+++ b/tests/unigbrk/test-u32-grapheme-prev.c
@@ -64,6 +64,7 @@ test_u32_grapheme_prev (size_t len, ...)
       for (i = 0; i < n; i++)
         fprintf (stderr, " %04x", s[i]);
       putc ('\n', stderr);
+      fflush (stderr);
       abort ();
     }
 }
diff --git a/tests/unigbrk/test-u8-grapheme-breaks.c 
b/tests/unigbrk/test-u8-grapheme-breaks.c
index d3157377c9..2fc66b87a2 100644
--- a/tests/unigbrk/test-u8-grapheme-breaks.c
+++ b/tests/unigbrk/test-u8-grapheme-breaks.c
@@ -63,6 +63,7 @@ test_u8_grapheme_breaks (const char *input, const char 
*expected)
           fprintf (stderr, "  %d", breaks[j]);
         putc ('\n', stderr);
 
+        fflush (stderr);
         abort ();
       }
 
diff --git a/tests/unigbrk/test-u8-grapheme-next.c 
b/tests/unigbrk/test-u8-grapheme-next.c
index 91818b6c71..16b62deece 100644
--- a/tests/unigbrk/test-u8-grapheme-next.c
+++ b/tests/unigbrk/test-u8-grapheme-next.c
@@ -43,6 +43,7 @@ test_u8_grapheme_next (const char *input, size_t n, size_t 
len)
       for (i = 0; i < n; i++)
         fprintf (stderr, " %02x", s[i]);
       putc ('\n', stderr);
+      fflush (stderr);
       abort ();
     }
 }
diff --git a/tests/unigbrk/test-u8-grapheme-prev.c 
b/tests/unigbrk/test-u8-grapheme-prev.c
index 786488e47c..0e06210b04 100644
--- a/tests/unigbrk/test-u8-grapheme-prev.c
+++ b/tests/unigbrk/test-u8-grapheme-prev.c
@@ -44,6 +44,7 @@ test_u8_grapheme_prev (const char *input, size_t n, size_t 
len)
       for (i = 0; i < n; i++)
         fprintf (stderr, " %02x", s[i]);
       putc ('\n', stderr);
+      fflush (stderr);
       abort ();
     }
 }
diff --git a/tests/unigbrk/test-uc-grapheme-breaks.c 
b/tests/unigbrk/test-uc-grapheme-breaks.c
index 6310d750c9..83835860e9 100644
--- a/tests/unigbrk/test-uc-grapheme-breaks.c
+++ b/tests/unigbrk/test-uc-grapheme-breaks.c
@@ -88,6 +88,7 @@ test_uc_grapheme_breaks (const char *expected, ucs4_t *s, 
size_t n,
           fprintf (stderr, "  %d", breaks[j]);
         putc ('\n', stderr);
 
+        fflush (stderr);
         abort ();
       }
 }
diff --git a/tests/unigbrk/test-ulc-grapheme-breaks.c 
b/tests/unigbrk/test-ulc-grapheme-breaks.c
index 7504c88784..d5b3a06f14 100644
--- a/tests/unigbrk/test-ulc-grapheme-breaks.c
+++ b/tests/unigbrk/test-ulc-grapheme-breaks.c
@@ -77,6 +77,7 @@ main ()
             fprintf (stderr, "  %d", p[j]);
           putc ('\n', stderr);
 
+          fflush (stderr);
           abort ();
         }
   }




Reply via email to