Update pcre2test to check delimiters after #perltest and fix some in test 1.
This commit is contained in:
parent
b768df5216
commit
33c8552813
@ -1,4 +1,4 @@
|
||||
.TH PCRE2TEST 1 "20 March 2020" "PCRE 10.35"
|
||||
.TH PCRE2TEST 1 "14 September 2020" "PCRE 10.36"
|
||||
.SH NAME
|
||||
pcre2test - a program for testing Perl-compatible regular expressions.
|
||||
.SH SYNOPSIS
|
||||
@ -273,7 +273,7 @@ test data, command lines that begin with # may appear. This file format, with
|
||||
some restrictions, can also be processed by the \fBperltest.sh\fP script that
|
||||
is distributed with PCRE2 as a means of checking that the behaviour of PCRE2
|
||||
and Perl is the same. For a specification of \fBperltest.sh\fP, see the
|
||||
comments near its beginning.
|
||||
comments near its beginning. See also the #perltest command below.
|
||||
.P
|
||||
When the input is a terminal, \fBpcre2test\fP prompts for each line of input,
|
||||
using "re>" to prompt for regular expression patterns, and "data>" to prompt
|
||||
@ -369,14 +369,19 @@ patterns. Modifiers on a pattern can change these settings.
|
||||
.sp
|
||||
#perltest
|
||||
.sp
|
||||
The appearance of this line causes all subsequent modifier settings to be
|
||||
checked for compatibility with the \fBperltest.sh\fP script, which is used to
|
||||
confirm that Perl gives the same results as PCRE2. Also, apart from comment
|
||||
lines, #pattern commands, and #subject commands that set or unset "mark", no
|
||||
command lines are permitted, because they and many of the modifiers are
|
||||
specific to \fBpcre2test\fP, and should not be used in test files that are also
|
||||
processed by \fBperltest.sh\fP. The \fB#perltest\fP command helps detect tests
|
||||
that are accidentally put in the wrong file.
|
||||
This line is used in test files that can also be processed by \fBperltest.sh\fP
|
||||
to confirm that Perl gives the same results as PCRE2. Subsequent tests are
|
||||
checked for the use of \fBpcre2test\fP features that are incompatible with the
|
||||
\fBperltest.sh\fP script.
|
||||
.P
|
||||
Patterns must use '/' as their delimiter, and only certain modifiers are
|
||||
supported. Comment lines, #pattern commands, and #subject commands that set or
|
||||
unset "mark" are recognized and acted on. The #perltest, #forbid_utf, and
|
||||
#newline_default commands, which are needed in the relevant pcre2test files,
|
||||
are silently ignored. All other command lines are ignored, but give a warning
|
||||
message. The \fB#perltest\fP command helps detect tests that are accidentally
|
||||
put in the wrong file or use the wrong delimiter. For more details of the
|
||||
\fBperltest.sh\fP script see the comments it contains.
|
||||
.sp
|
||||
#pop [<modifiers>]
|
||||
#popcopy [<modifiers>]
|
||||
@ -2096,6 +2101,6 @@ Cambridge, England.
|
||||
.rs
|
||||
.sp
|
||||
.nf
|
||||
Last updated: 20 March 2020
|
||||
Last updated: 14 September 2020
|
||||
Copyright (c) 1997-2020 University of Cambridge.
|
||||
.fi
|
||||
|
@ -5136,6 +5136,14 @@ PCRE2_SIZE patlen;
|
||||
PCRE2_SIZE valgrind_access_length;
|
||||
PCRE2_SIZE erroroffset;
|
||||
|
||||
/* The perltest.sh script supports only / as a delimiter. */
|
||||
|
||||
if (restrict_for_perl_test && delimiter != '/')
|
||||
{
|
||||
fprintf(outfile, "** The only allowed delimiter after #perltest is '/'\n");
|
||||
return PR_ABEND;
|
||||
}
|
||||
|
||||
/* Initialize the context and pattern/data controls for this test from the
|
||||
defaults. */
|
||||
|
||||
|
18
testdata/testinput1
vendored
18
testdata/testinput1
vendored
@ -5652,16 +5652,16 @@ name)/mark
|
||||
\= Expect no match
|
||||
acb
|
||||
|
||||
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
|
||||
/\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++/
|
||||
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||||
|
||||
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
|
||||
/\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++/
|
||||
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||||
|
||||
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++'
|
||||
/\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++/
|
||||
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||||
|
||||
'\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++'
|
||||
/\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++/
|
||||
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||||
|
||||
/^\w+(?>\s*)(?<=\w)/
|
||||
@ -5826,19 +5826,19 @@ ef) x/x,mark
|
||||
\= Expect no match
|
||||
aab
|
||||
|
||||
'(?>ab|abab){1,5}?M'
|
||||
/(?>ab|abab){1,5}?M/
|
||||
abababababababababababM
|
||||
|
||||
'(?>ab|abab){2}?M'
|
||||
/(?>ab|abab){2}?M/
|
||||
abababM
|
||||
|
||||
'((?(?=(a))a)+k)'
|
||||
/((?(?=(a))a)+k)/
|
||||
bbak
|
||||
|
||||
'((?(?=(a))a|)+k)'
|
||||
/((?(?=(a))a|)+k)/
|
||||
bbak
|
||||
|
||||
'(?(?!(b))a|b)+k'
|
||||
/(?(?!(b))a|b)+k/
|
||||
ababbalbbadabak
|
||||
|
||||
/(?!(b))c|b/
|
||||
|
18
testdata/testoutput1
vendored
18
testdata/testoutput1
vendored
@ -8978,19 +8978,19 @@ No match
|
||||
acb
|
||||
No match
|
||||
|
||||
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
|
||||
/\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++/
|
||||
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||||
0: NON QUOTED "QUOT""ED" AFTER
|
||||
|
||||
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
|
||||
/\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++/
|
||||
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||||
0: NON QUOTED "QUOT""ED" AFTER
|
||||
|
||||
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++'
|
||||
/\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++/
|
||||
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||||
0: NON QUOTED "QUOT""ED" AFTER
|
||||
|
||||
'\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++'
|
||||
/\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++/
|
||||
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||||
0: NON QUOTED "QUOT""ED" AFTER
|
||||
1: AFTER
|
||||
@ -9312,27 +9312,27 @@ No match
|
||||
aab
|
||||
No match
|
||||
|
||||
'(?>ab|abab){1,5}?M'
|
||||
/(?>ab|abab){1,5}?M/
|
||||
abababababababababababM
|
||||
0: abababababM
|
||||
|
||||
'(?>ab|abab){2}?M'
|
||||
/(?>ab|abab){2}?M/
|
||||
abababM
|
||||
0: ababM
|
||||
|
||||
'((?(?=(a))a)+k)'
|
||||
/((?(?=(a))a)+k)/
|
||||
bbak
|
||||
0: ak
|
||||
1: ak
|
||||
2: a
|
||||
|
||||
'((?(?=(a))a|)+k)'
|
||||
/((?(?=(a))a|)+k)/
|
||||
bbak
|
||||
0: ak
|
||||
1: ak
|
||||
2: a
|
||||
|
||||
'(?(?!(b))a|b)+k'
|
||||
/(?(?!(b))a|b)+k/
|
||||
ababbalbbadabak
|
||||
0: abak
|
||||
1: b
|
||||
|
Loading…
Reference in New Issue
Block a user