maint.mk: Update system header list for #include syntax checks.
[gnulib.git] / tests / test-nstrftime.c
blobc363eea067d28588116757809f9d694bca4e9f4f
1 /* Test that nstrftime works as required.
2 Copyright (C) 2011-2024 Free Software Foundation, Inc.
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */
17 /* Written by Jim Meyering. */
19 #include <config.h>
21 /* Specification. */
22 #include "strftime.h"
24 #include <locale.h>
25 #include <stdlib.h>
27 #include "intprops.h"
29 #include <errno.h>
30 #include <limits.h>
31 #include <stdio.h>
32 #include <string.h>
33 #include <time.h>
34 #include <unistd.h>
36 #include "macros.h"
38 #define FUNC nstrftime
39 #include "test-nstrftime.h"
41 int
42 main (void)
44 /* Try to set the locale by implicitly looking at the LC_ALL environment
45 variable.
46 configure should already have checked that the locale is supported. */
47 if (setlocale (LC_ALL, "") == NULL)
48 return 1;
50 bool is_C_locale = STREQ (getenv ("LC_ALL"), "C");
52 int fail = 0;
53 fail |= posixtm_test ();
54 fail |= tzalloc_test ();
55 fail |= quarter_test ();
56 fail |= errno_test ();
57 if (is_C_locale)
58 fail |= locales_test (english);
59 else
61 #if MUSL_LIBC
62 if (fail == 0)
64 if (test_exit_status != EXIT_SUCCESS)
65 return test_exit_status;
66 fputs ("Skipping test: musl libc does not come with localizations\n",
67 stderr);
68 return 77;
70 #else
71 fail |= locales_test (french);
72 #endif
74 return (fail ? fail : test_exit_status);