Switch to using an input file so that backslashes are specified
[rsync/rsync.git] / wildtest.txt
diff --git a/wildtest.txt b/wildtest.txt
new file mode 100644 (file)
index 0000000..02f713d
--- /dev/null
@@ -0,0 +1,131 @@
+# 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 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
+1 0 foo/bar            foo[/]bar
+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 foo/bar/baz                **/bar**
+
+# Various additional tests
+0 1 acrt               a[c-c]st
+0 1 ]                  [!]-]
+1 1 a                  [!]-]
+0 1 ''                 \
+0 1 \                  \
+1 1 foo                        foo
+1 1 @foo               @foo
+0 1 foo                        @foo
+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:]]
+1 1 ' '                [[:digit:][:upper:][:space:]]
+0 1 .          [[:digit:][:upper:][:space:]]
+1 1 5          [[:xdigit:]]
+1 1 f          [[:xdigit:]]
+1 1 D          [[:xdigit:]]
+
+# 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 \          [[-\]]
+0 1 -          [[-\]]
+
+# Test recursive calls and the ABORT code
+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