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 .SH NAME
pcre2test - a program for testing Perl-compatible regular expressions. pcre2test - a program for testing Perl-compatible regular expressions.
.SH SYNOPSIS .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 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 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 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 .P
When the input is a terminal, \fBpcre2test\fP prompts for each line of input, 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 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 .sp
#perltest #perltest
.sp .sp
The appearance of this line causes all subsequent modifier settings to be This line is used in test files that can also be processed by \fBperltest.sh\fP
checked for compatibility with the \fBperltest.sh\fP script, which is used to to confirm that Perl gives the same results as PCRE2. Subsequent tests are
confirm that Perl gives the same results as PCRE2. Also, apart from comment checked for the use of \fBpcre2test\fP features that are incompatible with the
lines, #pattern commands, and #subject commands that set or unset "mark", no \fBperltest.sh\fP script.
command lines are permitted, because they and many of the modifiers are .P
specific to \fBpcre2test\fP, and should not be used in test files that are also Patterns must use '/' as their delimiter, and only certain modifiers are
processed by \fBperltest.sh\fP. The \fB#perltest\fP command helps detect tests supported. Comment lines, #pattern commands, and #subject commands that set or
that are accidentally put in the wrong file. 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 .sp
#pop [<modifiers>] #pop [<modifiers>]
#popcopy [<modifiers>] #popcopy [<modifiers>]
@ -2096,6 +2101,6 @@ Cambridge, England.
.rs .rs
.sp .sp
.nf .nf
Last updated: 20 March 2020 Last updated: 14 September 2020
Copyright (c) 1997-2020 University of Cambridge. Copyright (c) 1997-2020 University of Cambridge.
.fi .fi

View File

@ -5136,6 +5136,14 @@ PCRE2_SIZE patlen;
PCRE2_SIZE valgrind_access_length; PCRE2_SIZE valgrind_access_length;
PCRE2_SIZE erroroffset; 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 /* Initialize the context and pattern/data controls for this test from the
defaults. */ defaults. */

18
testdata/testinput1 vendored
View File

@ -5652,16 +5652,16 @@ name)/mark
\= Expect no match \= Expect no match
acb acb
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++' /\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++/
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++' /\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++/
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++' /\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++/
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED 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 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
/^\w+(?>\s*)(?<=\w)/ /^\w+(?>\s*)(?<=\w)/
@ -5826,19 +5826,19 @@ ef) x/x,mark
\= Expect no match \= Expect no match
aab aab
'(?>ab|abab){1,5}?M' /(?>ab|abab){1,5}?M/
abababababababababababM abababababababababababM
'(?>ab|abab){2}?M' /(?>ab|abab){2}?M/
abababM abababM
'((?(?=(a))a)+k)' /((?(?=(a))a)+k)/
bbak bbak
'((?(?=(a))a|)+k)' /((?(?=(a))a|)+k)/
bbak bbak
'(?(?!(b))a|b)+k' /(?(?!(b))a|b)+k/
ababbalbbadabak ababbalbbadabak
/(?!(b))c|b/ /(?!(b))c|b/

18
testdata/testoutput1 vendored
View File

@ -8978,19 +8978,19 @@ No match
acb acb
No match No match
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++' /\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++/
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER 0: NON QUOTED "QUOT""ED" AFTER
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++' /\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++/
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER 0: NON QUOTED "QUOT""ED" AFTER
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++' /\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++/
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER 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 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER 0: NON QUOTED "QUOT""ED" AFTER
1: AFTER 1: AFTER
@ -9312,27 +9312,27 @@ No match
aab aab
No match No match
'(?>ab|abab){1,5}?M' /(?>ab|abab){1,5}?M/
abababababababababababM abababababababababababM
0: abababababM 0: abababababM
'(?>ab|abab){2}?M' /(?>ab|abab){2}?M/
abababM abababM
0: ababM 0: ababM
'((?(?=(a))a)+k)' /((?(?=(a))a)+k)/
bbak bbak
0: ak 0: ak
1: ak 1: ak
2: a 2: a
'((?(?=(a))a|)+k)' /((?(?=(a))a|)+k)/
bbak bbak
0: ak 0: ak
1: ak 1: ak
2: a 2: a
'(?(?!(b))a|b)+k' /(?(?!(b))a|b)+k/
ababbalbbadabak ababbalbbadabak
0: abak 0: abak
1: b 1: b