| @@ -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 | |
38 | ATF_TC(fnmatch_backslashes); | | 38 | ATF_TC(fnmatch_backslashes); |
39 | ATF_TC_HEAD(fnmatch_backslashes, tc) | | 39 | ATF_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 | |
45 | ATF_TC_BODY(fnmatch_backslashes, tc) | | 45 | ATF_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 | |
| | | 156 | ATF_TC(fnmatch_initialbracket); |
| | | 157 | ATF_TC_HEAD(fnmatch_initialbracket, tc) |
| | | 158 | { |
| | | 159 | atf_tc_set_md_var(tc, "descr", "Test fnmatch with initial ["); |
| | | 160 | } |
| | | 161 | |
| | | 162 | ATF_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 | |
156 | ATF_TP_ADD_TCS(tp) | | 180 | ATF_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 | } |