Sun Oct 12 18:59:35 2014 UTC ()
Add some fnmatch test cases from other C library test suites


(justin)
diff -r1.3 -r1.4 src/tests/lib/libc/gen/t_fnmatch.c

cvs diff -r1.3 -r1.4 src/tests/lib/libc/gen/t_fnmatch.c (expand / switch to unified diff)

--- src/tests/lib/libc/gen/t_fnmatch.c 2012/04/08 09:58:59 1.3
+++ src/tests/lib/libc/gen/t_fnmatch.c 2014/10/12 18:59:35 1.4
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: t_fnmatch.c,v 1.3 2012/04/08 09:58:59 jruoho Exp $ */ 1/* $NetBSD: t_fnmatch.c,v 1.4 2014/10/12 18:59:35 justin Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2012 The NetBSD Foundation, Inc. 4 * Copyright (c) 2012 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Jukka Ruohonen. 8 * by Jukka Ruohonen.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -19,27 +19,27 @@ @@ -19,27 +19,27 @@
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE. 29 * POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31#include <sys/cdefs.h> 31#include <sys/cdefs.h>
32__RCSID("$NetBSD: t_fnmatch.c,v 1.3 2012/04/08 09:58:59 jruoho Exp $"); 32__RCSID("$NetBSD: t_fnmatch.c,v 1.4 2014/10/12 18:59:35 justin Exp $");
33 33
34#include <atf-c.h> 34#include <atf-c.h>
35#include <fnmatch.h> 35#include <fnmatch.h>
36#include <stdio.h> 36#include <stdio.h>
37 37
38ATF_TC(fnmatch_backslashes); 38ATF_TC(fnmatch_backslashes);
39ATF_TC_HEAD(fnmatch_backslashes, tc) 39ATF_TC_HEAD(fnmatch_backslashes, tc)
40{ 40{
41 atf_tc_set_md_var(tc, "descr", 41 atf_tc_set_md_var(tc, "descr",
42 "Test translation of '\\' with fnmatch(3) (PR lib/41558)"); 42 "Test translation of '\\' with fnmatch(3) (PR lib/41558)");
43} 43}
44 44
45ATF_TC_BODY(fnmatch_backslashes, tc) 45ATF_TC_BODY(fnmatch_backslashes, tc)
@@ -143,25 +143,50 @@ ATF_TC_BODY(fnmatch_period, tc) @@ -143,25 +143,50 @@ ATF_TC_BODY(fnmatch_period, tc)
143 ATF_CHECK(fnmatch("*.c", "x.c", FNM_PATHNAME | FNM_PERIOD) == 0); 143 ATF_CHECK(fnmatch("*.c", "x.c", FNM_PATHNAME | FNM_PERIOD) == 0);
144 ATF_CHECK(fnmatch("*/?", "x/y", FNM_PATHNAME | FNM_PERIOD) == 0); 144 ATF_CHECK(fnmatch("*/?", "x/y", FNM_PATHNAME | FNM_PERIOD) == 0);
145 ATF_CHECK(fnmatch("*/*", "x/y", FNM_PATHNAME | FNM_PERIOD) == 0); 145 ATF_CHECK(fnmatch("*/*", "x/y", FNM_PATHNAME | FNM_PERIOD) == 0);
146 ATF_CHECK(fnmatch(".*/?", ".x/y", FNM_PATHNAME | FNM_PERIOD) == 0); 146 ATF_CHECK(fnmatch(".*/?", ".x/y", FNM_PATHNAME | FNM_PERIOD) == 0);
147 ATF_CHECK(fnmatch("*/.?", "x/.y", FNM_PATHNAME | FNM_PERIOD) == 0); 147 ATF_CHECK(fnmatch("*/.?", "x/.y", FNM_PATHNAME | FNM_PERIOD) == 0);
148 ATF_CHECK(fnmatch("x[.]y", "x.y", FNM_PATHNAME | FNM_PERIOD) == 0); 148 ATF_CHECK(fnmatch("x[.]y", "x.y", FNM_PATHNAME | FNM_PERIOD) == 0);
149 149
150 ATF_CHECK(fnmatch("?x/y", ".x/y", FNM_PATHNAME | FNM_PERIOD) != 0); 150 ATF_CHECK(fnmatch("?x/y", ".x/y", FNM_PATHNAME | FNM_PERIOD) != 0);
151 ATF_CHECK(fnmatch("*x/y", ".x/y", FNM_PATHNAME | FNM_PERIOD) != 0); 151 ATF_CHECK(fnmatch("*x/y", ".x/y", FNM_PATHNAME | FNM_PERIOD) != 0);
152 ATF_CHECK(fnmatch("x/?y", "x/.y", FNM_PATHNAME | FNM_PERIOD) != 0); 152 ATF_CHECK(fnmatch("x/?y", "x/.y", FNM_PATHNAME | FNM_PERIOD) != 0);
153 ATF_CHECK(fnmatch("x/*y", "x/.y", FNM_PATHNAME | FNM_PERIOD) != 0); 153 ATF_CHECK(fnmatch("x/*y", "x/.y", FNM_PATHNAME | FNM_PERIOD) != 0);
154} 154}
155 155
 156ATF_TC(fnmatch_initialbracket);
 157ATF_TC_HEAD(fnmatch_initialbracket, tc)
 158{
 159 atf_tc_set_md_var(tc, "descr", "Test fnmatch with initial [");
 160}
 161
 162ATF_TC_BODY(fnmatch_initialbracket, tc)
 163{
 164 ATF_CHECK(fnmatch("[[?*\\]", "\\", 0) == 0);
 165 ATF_CHECK(fnmatch("[]?*\\]", "]", 0) == 0);
 166 ATF_CHECK(fnmatch("[!]a-]", "b", 0) == 0);
 167 ATF_CHECK(fnmatch("[]-_]", "^", 0) == 0); /* range: ']', '^', '_' */
 168 ATF_CHECK(fnmatch("[!]-_]", "X", 0) == 0);
 169 ATF_CHECK(fnmatch("[a-z]/[a-z]", "a/b", 0) == 0);
 170 ATF_CHECK(fnmatch("[*]/b", "*/b", 0) == 0);
 171 ATF_CHECK(fnmatch("[?]/b", "?/b", 0) == 0);
 172 ATF_CHECK(fnmatch("[[a]/b", "a/b", 0) == 0);
 173 ATF_CHECK(fnmatch("[[a]/b", "[/b", 0) == 0);
 174 ATF_CHECK(fnmatch("[/b", "[/b", 0) == 0);
 175
 176 ATF_CHECK(fnmatch("[*]/b", "a/b", 0) != 0);
 177 ATF_CHECK(fnmatch("[?]/b", "a/b", 0) != 0);
 178}
 179
156ATF_TP_ADD_TCS(tp) 180ATF_TP_ADD_TCS(tp)
157{ 181{
158 182
159 ATF_TP_ADD_TC(tp, fnmatch_backslashes); 183 ATF_TP_ADD_TC(tp, fnmatch_backslashes);
160 ATF_TP_ADD_TC(tp, fnmatch_casefold); 184 ATF_TP_ADD_TC(tp, fnmatch_casefold);
161 ATF_TP_ADD_TC(tp, fnmatch_leadingdir); 185 ATF_TP_ADD_TC(tp, fnmatch_leadingdir);
162 ATF_TP_ADD_TC(tp, fnmatch_noescape); 186 ATF_TP_ADD_TC(tp, fnmatch_noescape);
163 ATF_TP_ADD_TC(tp, fnmatch_pathname); 187 ATF_TP_ADD_TC(tp, fnmatch_pathname);
164 ATF_TP_ADD_TC(tp, fnmatch_period); 188 ATF_TP_ADD_TC(tp, fnmatch_period);
 189 ATF_TP_ADD_TC(tp, fnmatch_initialbracket);
165 190
166 return atf_no_error(); 191 return atf_no_error();
167} 192}