Looks good, but please remember to update distribution sets and register new directory in src/etc/mtree/. On 03.03.2020 15:03, Michał Górny wrote: > --- > tests/lib/libc/Makefile | 4 +- > tests/lib/libc/nls/Makefile | 9 ++++ > tests/lib/libc/nls/t_catalog.c | 97 ++++++++++++++++++++++++++++++++++ > 3 files changed, 108 insertions(+), 2 deletions(-) > create mode 100644 tests/lib/libc/nls/Makefile > create mode 100644 tests/lib/libc/nls/t_catalog.c > > diff --git a/tests/lib/libc/Makefile b/tests/lib/libc/Makefile > index ab4f43b4a4e8..9a9e2b3a61dc 100644 > --- a/tests/lib/libc/Makefile > +++ b/tests/lib/libc/Makefile > @@ -6,8 +6,8 @@ > SUBDIR+= tls_dso .WAIT sync > > TESTS_SUBDIRS+= atomic > -TESTS_SUBDIRS+= c063 db gen hash inet locale misc net regex rpc setjmp stdlib > -TESTS_SUBDIRS+= stdio string sys termios time tls ttyio > +TESTS_SUBDIRS+= c063 db gen hash inet locale misc net nls regex rpc setjmp > +TESTS_SUBDIRS+= stdlib stdio string sys termios time tls ttyio > > .if ${HAVE_SSP} == "yes" > TESTS_SUBDIRS+= ssp > diff --git a/tests/lib/libc/nls/Makefile b/tests/lib/libc/nls/Makefile > new file mode 100644 > index 000000000000..698952abd2e0 > --- /dev/null > +++ b/tests/lib/libc/nls/Makefile > @@ -0,0 +1,9 @@ > +# $NetBSD$ > + > +.include <bsd.own.mk> > + > +TESTSDIR= ${TESTSBASE}/lib/libc/nls > + > +TESTS_C+= t_catalog > + > +.include <bsd.test.mk> > diff --git a/tests/lib/libc/nls/t_catalog.c b/tests/lib/libc/nls/t_catalog.c > new file mode 100644 > index 000000000000..5e4a1dc151ba > --- /dev/null > +++ b/tests/lib/libc/nls/t_catalog.c > @@ -0,0 +1,97 @@ > +/* $NetBSD$ */ > + > +/*- > + * Copyright (c) 2020 The NetBSD Foundation, Inc. > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS > + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED > + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS > + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > + * POSSIBILITY OF SUCH DAMAGE. > + */ > +#include <sys/cdefs.h> > +__RCSID("$NetBSD$"); > + > +#include <atf-c.h> > +#include <errno.h> > +#include <stdio.h> /* Needed for sys_nerr on FreeBSD */ > +#include <limits.h> > +#include <locale.h> > +#include <nl_types.h> > +#include <signal.h> > +#include <string.h> > + > +ATF_TC(catalog_errno); > +ATF_TC_HEAD(catalog_errno, tc) > +{ > + atf_tc_set_md_var(tc, "descr", "Test whether C catalog covers all " > + "errno values"); > +} > + > +ATF_TC_BODY(catalog_errno, tc) > +{ > + int i; > + nl_catd catd = catopen("libc", NL_CAT_LOCALE); > + ATF_REQUIRE(catd); > + > + for (i = 1; i < sys_nerr; i++) { > + const char *strerr = sys_errlist[i]; > + const char *caterr = catgets(catd, 1, i, ""); > + ATF_CHECK_MSG(!strcmp(strerr, caterr), > + "Catalog message mismatch for errno=%d (sys_errlist: '%s', " > + "catalog: '%s')\n", i, strerr, caterr); > + } > + > + catclose(catd); > +} > + > +ATF_TC(catalog_signal); > +ATF_TC_HEAD(catalog_signal, tc) > +{ > + atf_tc_set_md_var(tc, "descr", "Test whether C catalog covers all " > + "signal values"); > +} > + > +ATF_TC_BODY(catalog_signal, tc) > +{ > + int i; > + nl_catd catd = catopen("libc", NL_CAT_LOCALE); > + ATF_REQUIRE(catd); > + > + for (i = 1; i < SIGRTMIN-1; i++) { > + const char *strerr = sys_siglist[i]; > + const char *caterr = catgets(catd, 2, i, ""); > + ATF_CHECK_MSG(!strcmp(strerr, caterr), > + "Catalog message mismatch for signal=%d (sys_siglist: '%s', " > + "catalog: '%s')\n", i, strerr, caterr); > + } > + > + catclose(catd); > +} > + > +ATF_TP_ADD_TCS(tp) > +{ > + (void)setlocale(LC_ALL, "C"); > + > + ATF_TP_ADD_TC(tp, catalog_errno); > + ATF_TP_ADD_TC(tp, catalog_signal); > + > + return atf_no_error(); > +} > + >
Attachment:
signature.asc
Description: OpenPGP digital signature