-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
These files are from rsync.git commit f92f5b166e3019db42bc7fe1aa2f1a9178cd215d, which was the last commit before rsync turned GPL-3. All files are imported as-is and no-op. Adaptation is done in a separate patch. rsync.git -> git.git lib/wildmatch.[ch] wildmatch.[ch] wildtest.txt t/t3070/wildtest.txt Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Nguyễn Thái Ngọc Duy
authored and
Junio C Hamano
committed
Oct 15, 2012
1 parent
1c149ab
commit 5230f60
Showing
3 changed files
with
539 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
# Input is in the following format (all items white-space separated): | ||
# | ||
# The first two items are 1 or 0 indicating if the wildmat call is expected to | ||
# succeed and if fnmatch works the same way as wildmat, respectively. After | ||
# that is a text string for the match, and a pattern string. Strings can be | ||
# quoted (if desired) in either double or single quotes, as well as backticks. | ||
# | ||
# MATCH FNMATCH_SAME "text to match" 'pattern to use' | ||
|
||
# Basic wildmat features | ||
1 1 foo foo | ||
0 1 foo bar | ||
1 1 '' "" | ||
1 1 foo ??? | ||
0 1 foo ?? | ||
1 1 foo * | ||
1 1 foo f* | ||
0 1 foo *f | ||
1 1 foo *foo* | ||
1 1 foobar *ob*a*r* | ||
1 1 aaaaaaabababab *ab | ||
1 1 foo* foo\* | ||
0 1 foobar foo\*bar | ||
1 1 f\oo f\\oo | ||
1 1 ball *[al]? | ||
0 1 ten [ten] | ||
1 1 ten **[!te] | ||
0 1 ten **[!ten] | ||
1 1 ten t[a-g]n | ||
0 1 ten t[!a-g]n | ||
1 1 ton t[!a-g]n | ||
1 1 ton t[^a-g]n | ||
1 1 a]b a[]]b | ||
1 1 a-b a[]-]b | ||
1 1 a]b a[]-]b | ||
0 1 aab a[]-]b | ||
1 1 aab a[]a-]b | ||
1 1 ] ] | ||
|
||
# Extended slash-matching features | ||
0 1 foo/baz/bar foo*bar | ||
1 1 foo/baz/bar foo**bar | ||
0 1 foo/bar foo?bar | ||
0 1 foo/bar foo[/]bar | ||
0 1 foo/bar f[^eiu][^eiu][^eiu][^eiu][^eiu]r | ||
1 1 foo-bar f[^eiu][^eiu][^eiu][^eiu][^eiu]r | ||
0 1 foo **/foo | ||
1 1 /foo **/foo | ||
1 1 bar/baz/foo **/foo | ||
0 1 bar/baz/foo */foo | ||
0 0 foo/bar/baz **/bar* | ||
1 1 deep/foo/bar/baz **/bar/* | ||
0 1 deep/foo/bar/baz/ **/bar/* | ||
1 1 deep/foo/bar/baz/ **/bar/** | ||
0 1 deep/foo/bar **/bar/* | ||
1 1 deep/foo/bar/ **/bar/** | ||
1 1 foo/bar/baz **/bar** | ||
1 1 foo/bar/baz/x */bar/** | ||
0 0 deep/foo/bar/baz/x */bar/** | ||
1 1 deep/foo/bar/baz/x **/bar/*/* | ||
|
||
# Various additional tests | ||
0 1 acrt a[c-c]st | ||
1 1 acrt a[c-c]rt | ||
0 1 ] [!]-] | ||
1 1 a [!]-] | ||
0 1 '' \ | ||
0 1 \ \ | ||
0 1 /\ */\ | ||
1 1 /\ */\\ | ||
1 1 foo foo | ||
1 1 @foo @foo | ||
0 1 foo @foo | ||
1 1 [ab] \[ab] | ||
1 1 [ab] [[]ab] | ||
1 1 [ab] [[:]ab] | ||
0 1 [ab] [[::]ab] | ||
1 1 [ab] [[:digit]ab] | ||
1 1 [ab] [\[:]ab] | ||
1 1 ?a?b \??\?b | ||
1 1 abc \a\b\c | ||
0 1 foo '' | ||
1 1 foo/bar/baz/to **/t[o] | ||
|
||
# Character class tests | ||
1 1 a1B [[:alpha:]][[:digit:]][[:upper:]] | ||
0 1 a [[:digit:][:upper:][:space:]] | ||
1 1 A [[:digit:][:upper:][:space:]] | ||
1 1 1 [[:digit:][:upper:][:space:]] | ||
0 1 1 [[:digit:][:upper:][:spaci:]] | ||
1 1 ' ' [[:digit:][:upper:][:space:]] | ||
0 1 . [[:digit:][:upper:][:space:]] | ||
1 1 . [[:digit:][:punct:][:space:]] | ||
1 1 5 [[:xdigit:]] | ||
1 1 f [[:xdigit:]] | ||
1 1 D [[:xdigit:]] | ||
1 1 _ [[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]] | ||
#1 1 � [^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]] | ||
1 1 [^[:alnum:][:alpha:][:blank:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]] | ||
1 1 . [^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]] | ||
1 1 5 [a-c[:digit:]x-z] | ||
1 1 b [a-c[:digit:]x-z] | ||
1 1 y [a-c[:digit:]x-z] | ||
0 1 q [a-c[:digit:]x-z] | ||
|
||
# Additional tests, including some malformed wildmats | ||
1 1 ] [\\-^] | ||
0 1 [ [\\-^] | ||
1 1 - [\-_] | ||
1 1 ] [\]] | ||
0 1 \] [\]] | ||
0 1 \ [\]] | ||
0 1 ab a[]b | ||
0 1 a[]b a[]b | ||
0 1 ab[ ab[ | ||
0 1 ab [! | ||
0 1 ab [- | ||
1 1 - [-] | ||
0 1 - [a- | ||
0 1 - [!a- | ||
1 1 - [--A] | ||
1 1 5 [--A] | ||
1 1 ' ' '[ --]' | ||
1 1 $ '[ --]' | ||
1 1 - '[ --]' | ||
0 1 0 '[ --]' | ||
1 1 - [---] | ||
1 1 - [------] | ||
0 1 j [a-e-n] | ||
1 1 - [a-e-n] | ||
1 1 a [!------] | ||
0 1 [ []-a] | ||
1 1 ^ []-a] | ||
0 1 ^ [!]-a] | ||
1 1 [ [!]-a] | ||
1 1 ^ [a^bc] | ||
1 1 -b] [a-]b] | ||
0 1 \ [\] | ||
1 1 \ [\\] | ||
0 1 \ [!\\] | ||
1 1 G [A-\\] | ||
0 1 aaabbb b*a | ||
0 1 aabcaa *ba* | ||
1 1 , [,] | ||
1 1 , [\\,] | ||
1 1 \ [\\,] | ||
1 1 - [,-.] | ||
0 1 + [,-.] | ||
0 1 -.] [,-.] | ||
1 1 2 [\1-\3] | ||
1 1 3 [\1-\3] | ||
0 1 4 [\1-\3] | ||
1 1 \ [[-\]] | ||
1 1 [ [[-\]] | ||
1 1 ] [[-\]] | ||
0 1 - [[-\]] | ||
|
||
# Test recursion and the abort code (use "wildtest -i" to see iteration counts) | ||
1 1 -adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1 -*-*-*-*-*-*-12-*-*-*-m-*-*-* | ||
0 1 -adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1 -*-*-*-*-*-*-12-*-*-*-m-*-*-* | ||
0 1 -adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1 -*-*-*-*-*-*-12-*-*-*-m-*-*-* | ||
1 1 /adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1 /*/*/*/*/*/*/12/*/*/*/m/*/*/* | ||
0 1 /adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1 /*/*/*/*/*/*/12/*/*/*/m/*/*/* | ||
1 1 abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt **/*a*b*g*n*t | ||
0 1 abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz **/*a*b*g*n*t |
Oops, something went wrong.