testregex/docs/man/man1/testregex.html

143 lines
5.4 KiB
HTML
Raw Permalink Normal View History

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<TITLE>testregex man document</TITLE>
</HEAD>
<BODY bgcolor=white>
<PRE>
NAME
testregex - regex(3) test harness
SYNOPSIS
testregex [ options ]
DESCRIPTION
testregex reads regex(3) test specifications, one per line, from the
standard input and writes one output line for each failed test. A
summary line is written after all tests are done. Each successful
test is run again with REG_NOSUB. Unsupported features are noted
before the first test, and tests requiring these features are
silently ignored.
OPTIONS
-c catch signals and non-terminating calls
-e ignore error return mismatches
-h list help on standard error
-n do not repeat successful tests with regnexec()
-o ignore match[] overrun errors
-p ignore negative position mismatches
-s use stack instead of malloc
-x do not repeat successful tests with REG_NOSUB
-v list each test line
-A list failed test lines with actual answers
-B list all test lines with actual answers
-F list failed test lines
-P list passed test lines
-S output one summary line
INPUT FORMAT
Input lines may be blank, a comment beginning with #, or a test
specification. A specification is five fields separated by one
or more tabs. NULL denotes the empty string and NIL denotes the
0 pointer.
Field 1: the regex(3) flags to apply, one character per REG_feature
flag. The test is skipped if REG_feature is not supported by the
implementation. If the first character is not [BEASKLP] then the
specification is a global control line. One or more of [BEASKLP] may be
specified; the test will be repeated for each mode.
B basic BRE (grep, ed, sed)
E REG_EXTENDED ERE (egrep)
A REG_AUGMENTED ARE (egrep with negation)
S REG_SHELL SRE (sh glob)
K REG_SHELL|REG_AUGMENTED KRE (ksh glob)
L REG_LITERAL LRE (fgrep)
a REG_LEFT|REG_RIGHT implicit ^...$
b REG_NOTBOL lhs does not match ^
c REG_COMMENT ignore space and #...\n
d REG_SHELL_DOT explicit leading . match
e REG_NOTEOL rhs does not match $
f REG_MULTIPLE multiple \n separated patterns
g FNM_LEADING_DIR testfnmatch only -- match until /
h REG_MULTIREF multiple digit backref
i REG_ICASE ignore case
j REG_SPAN . matches \n
k REG_ESCAPE \ to ecape [...] delimiter
l REG_LEFT implicit ^...
m REG_MINIMAL minimal match
n REG_NEWLINE explicit \n match
o REG_ENCLOSED (|&) magic inside [@|&](...)
p REG_SHELL_PATH explicit / match
q REG_DELIMITED delimited pattern
r REG_RIGHT implicit ...$
s REG_SHELL_ESCAPED \ not special
t REG_MUSTDELIM all delimiters must be specified
u standard unspecified behavior -- errors not counted
v REG_CLASS_ESCAPE \ special inside [...]
w REG_NOSUB no subexpression match array
x REG_LENIENT let some errors slide
y REG_LEFT regexec() implicit ^...
z REG_NULL NULL subexpressions ok
$ expand C \c escapes in fields 2 and 3
/ field 2 is a regsubcomp() expression
= field 3 is a regdecomp() expression
Field 1 control lines:
C set LC_COLLATE and LC_CTYPE to locale in field 2
?test ... output field 5 if passed and != EXPECTED, silent otherwise
&test ... output field 5 if current and previous passed
|test ... output field 5 if current passed and previous failed
; ... output field 2 if previous failed
{test ... skip if failed until }
} end of skip
: comment comment copied as output NOTE
:comment:test :comment: ignored
N[OTE] comment comment copied as output NOTE
T[EST] comment comment
number use number for nmatch (20 by default)
Field 2: the regular expression pattern; SAME uses the pattern from
the previous specification.
Field 3: the string to match.
Field 4: the test outcome. This is either one of the posix error
codes (with REG_ omitted) or the match array, a list of (m,n)
entries with m and n being first and last+1 positions in the
field 3 string, or NULL if REG_NOSUB is in effect and success
is expected. BADPAT is acceptable in place of any regcomp(3)
error code. The match[] array is initialized to (-2,-2) before
each test. All array elements from 0 to nmatch-1 must be specified
in the outcome. Unspecified endpoints (offset -1) are denoted by ?.
Unset endpoints (offset -2) are denoted by X. {x}(o:n) denotes a
matched (?{...}) expression, where x is the text enclosed by {...},
o is the expression ordinal counting from 1, and n is the length of
the unmatched portion of the subject string. If x starts with a
number then that is the return value of re_execf(), otherwise 0 is
returned.
Field 5: optional comment appended to the report.
CAVEAT
If a regex implementation misbehaves with memory then all bets are off.
CONTRIBUTORS
Glenn Fowler gsf@research.att.com (ksh strmatch, regex extensions)
David Korn dgk@research.att.com (ksh glob matcher)
Doug McIlroy mcilroy@dartmouth.edu (ast regex/testre in C++)
Tom Lord lord@regexps.com (rx tests)
Henry Spencer henry@zoo.toronto.edu (original public regex)
Andrew Hume andrew@research.att.com (gre tests)
John Maddock John_Maddock@compuserve.com (regex++ tests)
Philip Hazel ph10@cam.ac.uk (pcre tests)
Ville Laurikari vl@iki.fi (libtre tests)
</PRE>
</BODY>
</HTML>