Update pcre2test to check delimiters after #perltest and fix some in test 1.

This commit is contained in:
Philip.Hazel 2020-09-14 15:39:39 +00:00
parent 5652d41209
commit a2f0fd01c7
4 changed files with 42 additions and 29 deletions

View File

@ -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

View File

@ -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
View File

@ -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
View File

@ -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