Skip to content

Commit

Permalink
Import wildmatch from rsync
Browse files Browse the repository at this point in the history
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
Show file tree
Hide file tree
Showing 3 changed files with 539 additions and 0 deletions.
165 changes: 165 additions & 0 deletions t/t3070/wildtest.txt
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
Loading

0 comments on commit 5230f60

Please sign in to comment.