summaryrefslogtreecommitdiffstats
path: root/contrib/netbsd-tests/lib/libc/gen/t_vis.c
diff options
context:
space:
mode:
authorngie <ngie@FreeBSD.org>2017-02-10 01:13:12 +0000
committerngie <ngie@FreeBSD.org>2017-02-10 01:13:12 +0000
commit8864cde3495dbfd6b476c1b77a8bde035e1cf000 (patch)
treeda558c97672e3d32f9e5551cd2daccd8684c5f03 /contrib/netbsd-tests/lib/libc/gen/t_vis.c
parent9c6235cf2af8bdadcd0f0a80288683f0c88f3e55 (diff)
downloadFreeBSD-src-8864cde3495dbfd6b476c1b77a8bde035e1cf000.zip
FreeBSD-src-8864cde3495dbfd6b476c1b77a8bde035e1cf000.tar.gz
MFC r305358,r305449,r305451,r306367,r306397,r309474:
This also contains a merge of ^/projects/netbsd-tests-update-12@r304035 . This change never hit ^/head because bin/cat's behavior was changed (on ^/head) to match NetBSD. PR: 210607 r305358: Update contrib/netbsd-tests with new content from NetBSD This updates the snapshot from 09/30/2014 to 08/11/2016 This brings in a number of new testcases from upstream, most notably: - bin/cat - lib/libc - lib/msun - lib/libthr - usr.bin/sort lib/libc/tests/stdio/open_memstream_test.c was moved to lib/libc/tests/stdio/open_memstream2_test.c to accomodate the new open_memstream test from NetBSD. Tested on: amd64 (VMware fusion VM; various bare metal platforms); i386 (VMware fusion VM); make tinderbox r305449: Install h_db to unbreak some of the lib/libc/db testcases after r305358 r305451: Fix lib/libc/rpc test assumptions added in r305358 - Require root in the tcp/udp subtests (it's needed on FreeBSD when registering services). - Skip the tests if service registration fails. r306367 (by br): Allow up to 6 arguments only on MIPS. r306397 (by br): Use right piece of code for FreeBSD. r309474: Don't build :strvis_locale if VIS_NOLOCALE is undefined The copy of contrib/libc-vis on ^/stable/10 doesn't contain all of the features in the ^/stable/11 // ^/head version, including VIS_NOLOCALE. The risk is lower in conditionally running the test instead of backporting the newer version of libc-vis
Diffstat (limited to 'contrib/netbsd-tests/lib/libc/gen/t_vis.c')
-rw-r--r--contrib/netbsd-tests/lib/libc/gen/t_vis.c45
1 files changed, 44 insertions, 1 deletions
diff --git a/contrib/netbsd-tests/lib/libc/gen/t_vis.c b/contrib/netbsd-tests/lib/libc/gen/t_vis.c
index 525bafa..76f85f4 100644
--- a/contrib/netbsd-tests/lib/libc/gen/t_vis.c
+++ b/contrib/netbsd-tests/lib/libc/gen/t_vis.c
@@ -1,4 +1,4 @@
-/* $NetBSD: t_vis.c,v 1.7 2014/09/08 19:01:03 christos Exp $ */
+/* $NetBSD: t_vis.c,v 1.8 2015/05/23 14:02:11 christos Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -32,6 +32,7 @@
#include <string.h>
#include <stdlib.h>
+#include <locale.h>
#include <err.h>
#include <vis.h>
@@ -143,6 +144,41 @@ ATF_TC_BODY(strunvis_hex, tc)
}
}
+/* Begin FreeBSD: ^/stable/10 doesn't have VIS_NOLOCALE */
+#ifdef VIS_NOLOCALE
+/* End FreeBSD */
+ATF_TC(strvis_locale);
+ATF_TC_HEAD(strvis_locale, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Test strvis(3) with locale");
+}
+
+ATF_TC_BODY(strvis_locale, tc)
+{
+ char s[256], cd[sizeof(s) * 4 + 1], jd[sizeof(cd)], *ol;
+ int jr, cr;
+
+ for (size_t i = 0; i < sizeof(s) - 1; i++)
+ s[i] = i + 1;
+ s[sizeof(s) - 1] = '\0';
+
+ ol = setlocale(LC_CTYPE, "ja_JP.UTF-8");
+ ATF_REQUIRE(ol != NULL);
+ jr = strvisx(jd, s, sizeof(s), VIS_WHITE | VIS_NOLOCALE);
+ ATF_REQUIRE(jr != -1);
+ ol = strdup(ol);
+ ATF_REQUIRE(ol != NULL);
+ ATF_REQUIRE(setlocale(LC_CTYPE, "C") != NULL);
+ cr = strvisx(cd, s, sizeof(s), VIS_WHITE);
+ ATF_REQUIRE(jr == cr);
+ ATF_REQUIRE(memcmp(jd, cd, jr) == 0);
+ setlocale(LC_CTYPE, ol);
+ free(ol);
+}
+/* Begin FreeBSD: ^/stable/10 doesn't have VIS_NOLOCALE */
+#endif /* VIS_NOLOCALE */
+/* End FreeBSD */
+
ATF_TP_ADD_TCS(tp)
{
@@ -150,6 +186,13 @@ ATF_TP_ADD_TCS(tp)
ATF_TP_ADD_TC(tp, strvis_null);
ATF_TP_ADD_TC(tp, strvis_empty);
ATF_TP_ADD_TC(tp, strunvis_hex);
+/* Begin FreeBSD: ^/stable/10 doesn't have VIS_NOLOCALE */
+#ifdef VIS_NOLOCALE
+/* End FreeBSD */
+ ATF_TP_ADD_TC(tp, strvis_locale);
+/* Begin FreeBSD: ^/stable/10 doesn't have VIS_NOLOCALE */
+#endif /* VIS_NOLOCALE */
+/* End FreeBSD */
return atf_no_error();
}
OpenPOWER on IntegriCloud