| # This set of tests is run only with the 8-bit library. It tests the POSIX | |
| # interface, which is supported only with the 8-bit library. This test should | |
| # not be run with JIT (which is not available for the POSIX interface). | |
| #forbid_utf | |
| #pattern posix | |
| # Test some invalid options | |
| /abc/auto_callout | |
| ** Ignored with POSIX interface: auto_callout | |
| /abc/ | |
| abc\=find_limits | |
| ** Ignored with POSIX interface: find_limits | |
| 0: abc | |
| /abc/ | |
| abc\=partial_hard | |
| ** Ignored with POSIX interface: partial_hard | |
| 0: abc | |
| /a(())bc/parens_nest_limit=1 | |
| ** Ignored with POSIX interface: parens_nest_limit | |
| /abc/allow_surrogate_escapes,max_pattern_length=2 | |
| ** Ignored with POSIX interface: allow_surrogate_escapes max_pattern_length | |
| # Real tests | |
| /abc/ | |
| abc | |
| 0: abc | |
| /^abc|def/ | |
| abcdef | |
| 0: abc | |
| abcdef\=notbol | |
| 0: def | |
| /.*((abc)$|(def))/ | |
| defabc | |
| 0: defabc | |
| 1: abc | |
| 2: abc | |
| defabc\=noteol | |
| 0: def | |
| 1: def | |
| 2: <unset> | |
| 3: def | |
| /the quick brown fox/ | |
| the quick brown fox | |
| 0: the quick brown fox | |
| \= Expect no match | |
| The Quick Brown Fox | |
| No match: POSIX code 17: match failed | |
| /the quick brown fox/i | |
| the quick brown fox | |
| 0: the quick brown fox | |
| The Quick Brown Fox | |
| 0: The Quick Brown Fox | |
| /(*LF)abc.def/ | |
| \= Expect no match | |
| abc\ndef | |
| No match: POSIX code 17: match failed | |
| /(*LF)abc$/ | |
| abc | |
| 0: abc | |
| abc\n | |
| 0: abc | |
| /(abc)\2/ | |
| Failed: POSIX code 15: bad back reference at offset 7 | |
| /(abc\1)/ | |
| \= Expect no match | |
| abc | |
| No match: POSIX code 17: match failed | |
| /a*(b+)(z)(z)/ | |
| aaaabbbbzzzz | |
| 0: aaaabbbbzz | |
| 1: bbbb | |
| 2: z | |
| 3: z | |
| aaaabbbbzzzz\=ovector=0 | |
| Matched without capture | |
| aaaabbbbzzzz\=ovector=1 | |
| 0: aaaabbbbzz | |
| aaaabbbbzzzz\=ovector=2 | |
| 0: aaaabbbbzz | |
| 1: bbbb | |
| /(a)(b)/ | |
| ab\=posix_startend=0:2,ovector=1 | |
| 0: ab | |
| ab\=posix_startend=0:2,ovector=0 | |
| Matched without capture | |
| ab\=posix_startend=1:2,ovector=1 | |
| No match: POSIX code 17: match failed | |
| ab\=posix_startend=1:2,ovector=0 | |
| No match: POSIX code 17: match failed | |
| /(*ANY)ab.cd/ | |
| ab-cd | |
| 0: ab-cd | |
| ab=cd | |
| 0: ab=cd | |
| \= Expect no match | |
| ab\ncd | |
| No match: POSIX code 17: match failed | |
| /ab.cd/s | |
| ab-cd | |
| 0: ab-cd | |
| ab=cd | |
| 0: ab=cd | |
| ab\ncd | |
| 0: ab\x0acd | |
| /a(b)c/posix_nosub | |
| abc | |
| Matched with REG_NOSUB | |
| /a(?P<name>b)c/posix_nosub | |
| abc | |
| Matched with REG_NOSUB | |
| /(a)\1/posix_nosub | |
| zaay | |
| Matched with REG_NOSUB | |
| /a?|b?/ | |
| abc | |
| 0: a | |
| \= Expect no match | |
| ddd\=notempty | |
| No match: POSIX code 17: match failed | |
| /\w+A/ | |
| CDAAAAB | |
| 0: CDAAAA | |
| /\w+A/ungreedy | |
| CDAAAAB | |
| 0: CDA | |
| /\Biss\B/I,aftertext | |
| ** Ignored with POSIX interface: info | |
| Mississippi | |
| 0: iss | |
| 0+ issippi | |
| /abc/\ | |
| Failed: POSIX code 9: bad escape sequence at offset 4 | |
| "(?(?C)" | |
| Failed: POSIX code 11: unbalanced () at offset 6 | |
| "(?(?C))" | |
| Failed: POSIX code 3: pattern error at offset 6 | |
| /abcd/substitute_extended | |
| ** Ignored with POSIX interface: substitute_extended | |
| /\[A]{1000000}**/expand,regerror_buffsize=31 | |
| Failed: POSIX code 4: ? * + invalid at offset 100000 | |
| ** regerror() message truncated | |
| /\[A]{1000000}**/expand,regerror_buffsize=32 | |
| Failed: POSIX code 4: ? * + invalid at offset 1000002 | |
| /a(b/regerror_buffsize=0 | |
| Failed: POSIX code 11: | |
| ** regerror() message truncated | |
| /a(b/regerror_buffsize=1 | |
| Failed: POSIX code 11: | |
| ** regerror() message truncated | |
| /a(b/regerror_buffsize=12 | |
| Failed: POSIX code 11: unbalanced | |
| ** regerror() message truncated | |
| /a(b/regerror_buffsize=13 | |
| Failed: POSIX code 11: unbalanced ( | |
| ** regerror() message truncated | |
| /a(b/regerror_buffsize=14 | |
| Failed: POSIX code 11: unbalanced () | |
| ** regerror() message truncated | |
| /a(b/regerror_buffsize=15 | |
| Failed: POSIX code 11: unbalanced () | |
| ** regerror() message truncated | |
| /a(b/regerror_buffsize=25 | |
| Failed: POSIX code 11: unbalanced () at offset | |
| ** regerror() message truncated | |
| /a(b/regerror_buffsize=26 | |
| Failed: POSIX code 11: unbalanced () at offset 3 | |
| //posix_nosub | |
| \=offset=70000 | |
| ** Ignored with POSIX interface: offset | |
| Matched with REG_NOSUB | |
| /^d(e)$/posix | |
| acdef\=posix_startend=2:4 | |
| 0: de | |
| 1: e | |
| acde\=posix_startend=2 | |
| 0: de | |
| 1: e | |
| \= Expect no match | |
| acdef | |
| No match: POSIX code 17: match failed | |
| acdef\=posix_startend=2 | |
| No match: POSIX code 17: match failed | |
| /^a\x{00}b$/posix | |
| a\x{00}b\=posix_startend=0:3 | |
| 0: a\x00b | |
| /"A" 00 "B"/hex | |
| A\x{00}B\=posix_startend=0:3 | |
| 0: A\x00B | |
| /ABC/use_length | |
| ABC | |
| 0: ABC | |
| /a\b(c/literal,posix | |
| a\\b(c | |
| 0: a\b(c | |
| /a\b(c/literal,posix,dotall | |
| Failed: POSIX code 16: bad argument at offset 0 | |
| /((a)(b)?(c))/posix | |
| 123ace | |
| 0: ac | |
| 1: ac | |
| 2: a | |
| 3: <unset> | |
| 4: c | |
| 123ace\=posix_startend=2:6 | |
| 0: ac | |
| 1: ac | |
| 2: a | |
| 3: <unset> | |
| 4: c | |
| //posix | |
| \= Expect errors | |
| \=null_subject | |
| No match: POSIX code 16: bad argument | |
| abc\=null_subject | |
| No match: POSIX code 16: bad argument | |
| /(*LIMIT_HEAP=0)xx/posix | |
| \= Expect error | |
| xxxx | |
| No match: POSIX code 14: failed to get memory | |
| /(*LIMIT_DEPTH=1)(a)/ | |
| a | |
| No match: POSIX code 14: failed to get memory | |
| /(*LIMIT_MATCH=1)(a)/ | |
| a | |
| No match: POSIX code 14: failed to get memory | |
| /(?R)/ | |
| a | |
| No match: POSIX code 3: pattern error | |
| /(?(DEFINE)(?<sneaky>b\K))a(?=(?&sneaky))/ | |
| ab | |
| No match: POSIX code 3: pattern error | |
| zz | |
| No match: POSIX code 17: match failed | |
| # End of testdata/testinput18 |