tools/pcre/RunGrepTest
author David Anderson <dvander@alliedmods.net>
Tue Jul 28 17:51:34 2009 -0400 (2009-07-28)
changeset 2762 d2d467bf1b5a
child 3831 babd0eee3c5e
permissions -rwxr-xr-x
Check-in of pcre-7.9 source code and win32 static lib (bug 3923).
dvander@2762
     1
#! /bin/sh
dvander@2762
     2
dvander@2762
     3
# Run pcregrep tests. The assumption is that the PCRE tests check the library
dvander@2762
     4
# itself. What we are checking here is the file handling and options that are
dvander@2762
     5
# supported by pcregrep.
dvander@2762
     6
dvander@2762
     7
# Set the C locale, so that sort(1) behaves predictably.
dvander@2762
     8
LC_ALL=C
dvander@2762
     9
export LC_ALL
dvander@2762
    10
dvander@2762
    11
pcregrep=`pwd`/pcregrep
dvander@2762
    12
dvander@2762
    13
echo " "
dvander@2762
    14
echo "Testing pcregrep"
dvander@2762
    15
$pcregrep -V
dvander@2762
    16
dvander@2762
    17
cf="diff -ub"
dvander@2762
    18
valgrind=
dvander@2762
    19
dvander@2762
    20
while [ $# -gt 0 ] ; do
dvander@2762
    21
  case $1 in
dvander@2762
    22
    valgrind) valgrind="valgrind -q --leak-check=no";;
dvander@2762
    23
    *) echo "Unknown argument $1"; exit 1;;
dvander@2762
    24
  esac
dvander@2762
    25
  shift
dvander@2762
    26
done
dvander@2762
    27
dvander@2762
    28
# If PCRE has been built in a directory other than the source directory, and
dvander@2762
    29
# this test is being run from "make check" as usual, then $(srcdir) will be
dvander@2762
    30
# set. If not, set it to the current directory. We then arrange to run the
dvander@2762
    31
# pcregrep command in the source directory so that the file names that appear
dvander@2762
    32
# in the output are always the same.
dvander@2762
    33
dvander@2762
    34
if [ -z "$srcdir" -o ! -d "$srcdir/testdata" ] ; then
dvander@2762
    35
  srcdir=.
dvander@2762
    36
fi
dvander@2762
    37
dvander@2762
    38
# Check for the availability of UTF-8 support
dvander@2762
    39
dvander@2762
    40
./pcretest -C | ./pcregrep "No UTF-8 support" >/dev/null
dvander@2762
    41
utf8=$?
dvander@2762
    42
dvander@2762
    43
echo "---------------------------- Test 1 ------------------------------" >testtry
dvander@2762
    44
(cd $srcdir; $valgrind $pcregrep PATTERN ./testdata/grepinput) >>testtry
dvander@2762
    45
dvander@2762
    46
echo "---------------------------- Test 2 ------------------------------" >>testtry
dvander@2762
    47
(cd $srcdir; $valgrind $pcregrep '^PATTERN' ./testdata/grepinput) >>testtry
dvander@2762
    48
dvander@2762
    49
echo "---------------------------- Test 3 ------------------------------" >>testtry
dvander@2762
    50
(cd $srcdir; $valgrind $pcregrep -in PATTERN ./testdata/grepinput) >>testtry
dvander@2762
    51
dvander@2762
    52
echo "---------------------------- Test 4 ------------------------------" >>testtry
dvander@2762
    53
(cd $srcdir; $valgrind $pcregrep -ic PATTERN ./testdata/grepinput) >>testtry
dvander@2762
    54
dvander@2762
    55
echo "---------------------------- Test 5 ------------------------------" >>testtry
dvander@2762
    56
(cd $srcdir; $valgrind $pcregrep -in PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
    57
dvander@2762
    58
echo "---------------------------- Test 6 ------------------------------" >>testtry
dvander@2762
    59
(cd $srcdir; $valgrind $pcregrep -inh PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
    60
dvander@2762
    61
echo "---------------------------- Test 7 ------------------------------" >>testtry
dvander@2762
    62
(cd $srcdir; $valgrind $pcregrep -il PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
    63
dvander@2762
    64
echo "---------------------------- Test 8 ------------------------------" >>testtry
dvander@2762
    65
(cd $srcdir; $valgrind $pcregrep -l PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
    66
dvander@2762
    67
echo "---------------------------- Test 9 ------------------------------" >>testtry
dvander@2762
    68
(cd $srcdir; $valgrind $pcregrep -q PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
    69
echo "RC=$?" >>testtry
dvander@2762
    70
dvander@2762
    71
echo "---------------------------- Test 10 -----------------------------" >>testtry
dvander@2762
    72
(cd $srcdir; $valgrind $pcregrep -q NEVER-PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
    73
echo "RC=$?" >>testtry
dvander@2762
    74
dvander@2762
    75
echo "---------------------------- Test 11 -----------------------------" >>testtry
dvander@2762
    76
(cd $srcdir; $valgrind $pcregrep -vn pattern ./testdata/grepinputx) >>testtry
dvander@2762
    77
dvander@2762
    78
echo "---------------------------- Test 12 -----------------------------" >>testtry
dvander@2762
    79
(cd $srcdir; $valgrind $pcregrep -ix pattern ./testdata/grepinputx) >>testtry
dvander@2762
    80
dvander@2762
    81
echo "---------------------------- Test 13 -----------------------------" >>testtry
dvander@2762
    82
(cd $srcdir; $valgrind $pcregrep -f./testdata/greplist ./testdata/grepinputx) >>testtry
dvander@2762
    83
dvander@2762
    84
echo "---------------------------- Test 14 -----------------------------" >>testtry
dvander@2762
    85
(cd $srcdir; $valgrind $pcregrep -w pat ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
    86
dvander@2762
    87
echo "---------------------------- Test 15 -----------------------------" >>testtry
dvander@2762
    88
(cd $srcdir; $valgrind $pcregrep 'abc^*' ./testdata/grepinput) 2>>testtry >>testtry
dvander@2762
    89
dvander@2762
    90
echo "---------------------------- Test 16 -----------------------------" >>testtry
dvander@2762
    91
(cd $srcdir; $valgrind $pcregrep abc ./testdata/grepinput ./testdata/nonexistfile) 2>>testtry >>testtry
dvander@2762
    92
dvander@2762
    93
echo "---------------------------- Test 17 -----------------------------" >>testtry
dvander@2762
    94
(cd $srcdir; $valgrind $pcregrep -M 'the\noutput' ./testdata/grepinput) >>testtry
dvander@2762
    95
dvander@2762
    96
echo "---------------------------- Test 18 -----------------------------" >>testtry
dvander@2762
    97
(cd $srcdir; $valgrind $pcregrep -Mn '(the\noutput|dog\.\n--)' ./testdata/grepinput) >>testtry
dvander@2762
    98
dvander@2762
    99
echo "---------------------------- Test 19 -----------------------------" >>testtry
dvander@2762
   100
(cd $srcdir; $valgrind $pcregrep -Mix 'Pattern' ./testdata/grepinputx) >>testtry
dvander@2762
   101
dvander@2762
   102
echo "---------------------------- Test 20 -----------------------------" >>testtry
dvander@2762
   103
(cd $srcdir; $valgrind $pcregrep -Mixn 'complete pair\nof lines' ./testdata/grepinputx) >>testtry
dvander@2762
   104
dvander@2762
   105
echo "---------------------------- Test 21 -----------------------------" >>testtry
dvander@2762
   106
(cd $srcdir; $valgrind $pcregrep -nA3 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   107
dvander@2762
   108
echo "---------------------------- Test 22 -----------------------------" >>testtry
dvander@2762
   109
(cd $srcdir; $valgrind $pcregrep -nB3 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   110
dvander@2762
   111
echo "---------------------------- Test 23 -----------------------------" >>testtry
dvander@2762
   112
(cd $srcdir; $valgrind $pcregrep -C3 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   113
dvander@2762
   114
echo "---------------------------- Test 24 -----------------------------" >>testtry
dvander@2762
   115
(cd $srcdir; $valgrind $pcregrep -A9 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   116
dvander@2762
   117
echo "---------------------------- Test 25 -----------------------------" >>testtry
dvander@2762
   118
(cd $srcdir; $valgrind $pcregrep -nB9 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   119
dvander@2762
   120
echo "---------------------------- Test 26 -----------------------------" >>testtry
dvander@2762
   121
(cd $srcdir; $valgrind $pcregrep -A9 -B9 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   122
dvander@2762
   123
echo "---------------------------- Test 27 -----------------------------" >>testtry
dvander@2762
   124
(cd $srcdir; $valgrind $pcregrep -A10 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   125
dvander@2762
   126
echo "---------------------------- Test 28 -----------------------------" >>testtry
dvander@2762
   127
(cd $srcdir; $valgrind $pcregrep -nB10 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   128
dvander@2762
   129
echo "---------------------------- Test 29 -----------------------------" >>testtry
dvander@2762
   130
(cd $srcdir; $valgrind $pcregrep -C12 -B10 'four' ./testdata/grepinputx) >>testtry
dvander@2762
   131
dvander@2762
   132
echo "---------------------------- Test 30 -----------------------------" >>testtry
dvander@2762
   133
(cd $srcdir; $valgrind $pcregrep -inB3 'pattern' ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
   134
dvander@2762
   135
echo "---------------------------- Test 31 -----------------------------" >>testtry
dvander@2762
   136
(cd $srcdir; $valgrind $pcregrep -inA3 'pattern' ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
   137
dvander@2762
   138
echo "---------------------------- Test 32 -----------------------------" >>testtry
dvander@2762
   139
(cd $srcdir; $valgrind $pcregrep -L 'fox' ./testdata/grepinput ./testdata/grepinputx) >>testtry
dvander@2762
   140
dvander@2762
   141
echo "---------------------------- Test 33 -----------------------------" >>testtry
dvander@2762
   142
(cd $srcdir; $valgrind $pcregrep 'fox' ./testdata/grepnonexist) >>testtry 2>&1
dvander@2762
   143
echo "RC=$?" >>testtry
dvander@2762
   144
dvander@2762
   145
echo "---------------------------- Test 34 -----------------------------" >>testtry
dvander@2762
   146
(cd $srcdir; $valgrind $pcregrep -s 'fox' ./testdata/grepnonexist) >>testtry 2>&1
dvander@2762
   147
echo "RC=$?" >>testtry
dvander@2762
   148
dvander@2762
   149
echo "---------------------------- Test 35 -----------------------------" >>testtry
dvander@2762
   150
(cd $srcdir; $valgrind $pcregrep -L -r --include=grepinputx --exclude_dir='^\.' 'fox' ./testdata) >>testtry
dvander@2762
   151
echo "RC=$?" >>testtry
dvander@2762
   152
dvander@2762
   153
echo "---------------------------- Test 36 -----------------------------" >>testtry
dvander@2762
   154
(cd $srcdir; $valgrind $pcregrep -L -r --include=grepinput --exclude 'grepinput$' --exclude_dir='^\.' 'fox' ./testdata | sort) >>testtry
dvander@2762
   155
echo "RC=$?" >>testtry
dvander@2762
   156
dvander@2762
   157
echo "---------------------------- Test 37 -----------------------------" >>testtry
dvander@2762
   158
(cd $srcdir; $valgrind $pcregrep  '^(a+)*\d' ./testdata/grepinput) >>testtry 2>teststderr
dvander@2762
   159
echo "RC=$?" >>testtry
dvander@2762
   160
echo "======== STDERR ========" >>testtry
dvander@2762
   161
cat teststderr >>testtry
dvander@2762
   162
dvander@2762
   163
echo "---------------------------- Test 38 ------------------------------" >>testtry
dvander@2762
   164
(cd $srcdir; $valgrind $pcregrep '>\x00<' ./testdata/grepinput) >>testtry
dvander@2762
   165
dvander@2762
   166
echo "---------------------------- Test 39 ------------------------------" >>testtry
dvander@2762
   167
(cd $srcdir; $valgrind $pcregrep -A1 'before the binary zero' ./testdata/grepinput) >>testtry
dvander@2762
   168
dvander@2762
   169
echo "---------------------------- Test 40 ------------------------------" >>testtry
dvander@2762
   170
(cd $srcdir; $valgrind $pcregrep -B1 'after the binary zero' ./testdata/grepinput) >>testtry
dvander@2762
   171
dvander@2762
   172
echo "---------------------------- Test 41 ------------------------------" >>testtry
dvander@2762
   173
(cd $srcdir; $valgrind $pcregrep -B1 -o '\w+ the binary zero' ./testdata/grepinput) >>testtry
dvander@2762
   174
dvander@2762
   175
echo "---------------------------- Test 41 ------------------------------" >>testtry
dvander@2762
   176
(cd $srcdir; $valgrind $pcregrep -B1 -onH '\w+ the binary zero' ./testdata/grepinput) >>testtry
dvander@2762
   177
dvander@2762
   178
echo "---------------------------- Test 42 ------------------------------" >>testtry
dvander@2762
   179
(cd $srcdir; $valgrind $pcregrep -on 'before|zero|after' ./testdata/grepinput) >>testtry
dvander@2762
   180
dvander@2762
   181
echo "---------------------------- Test 43 ------------------------------" >>testtry
dvander@2762
   182
(cd $srcdir; $valgrind $pcregrep -on -e before -e zero -e after ./testdata/grepinput) >>testtry
dvander@2762
   183
dvander@2762
   184
echo "---------------------------- Test 44 ------------------------------" >>testtry
dvander@2762
   185
(cd $srcdir; $valgrind $pcregrep -on -f ./testdata/greplist -e binary ./testdata/grepinput) >>testtry
dvander@2762
   186
dvander@2762
   187
echo "---------------------------- Test 45 ------------------------------" >>testtry
dvander@2762
   188
(cd $srcdir; $valgrind $pcregrep -e abc -e '(unclosed' ./testdata/grepinput) 2>>testtry >>testtry
dvander@2762
   189
dvander@2762
   190
echo "---------------------------- Test 46 ------------------------------" >>testtry
dvander@2762
   191
(cd $srcdir; $valgrind $pcregrep -Fx "AB.VE
dvander@2762
   192
elephant" ./testdata/grepinput) >>testtry
dvander@2762
   193
dvander@2762
   194
echo "---------------------------- Test 47 ------------------------------" >>testtry
dvander@2762
   195
(cd $srcdir; $valgrind $pcregrep -F "AB.VE
dvander@2762
   196
elephant" ./testdata/grepinput) >>testtry
dvander@2762
   197
dvander@2762
   198
echo "---------------------------- Test 48 ------------------------------" >>testtry
dvander@2762
   199
(cd $srcdir; $valgrind $pcregrep -F -e DATA -e "AB.VE
dvander@2762
   200
elephant" ./testdata/grepinput) >>testtry
dvander@2762
   201
dvander@2762
   202
echo "---------------------------- Test 49 ------------------------------" >>testtry
dvander@2762
   203
(cd $srcdir; $valgrind $pcregrep "^(abc|def|ghi|jkl)" ./testdata/grepinputx) >>testtry
dvander@2762
   204
dvander@2762
   205
echo "---------------------------- Test 50 ------------------------------" >>testtry
dvander@2762
   206
(cd $srcdir; $valgrind $pcregrep -Mv "brown\sfox" ./testdata/grepinputv) >>testtry
dvander@2762
   207
dvander@2762
   208
echo "---------------------------- Test 51 ------------------------------" >>testtry
dvander@2762
   209
(cd $srcdir; $valgrind $pcregrep --colour=always jumps ./testdata/grepinputv) >>testtry
dvander@2762
   210
dvander@2762
   211
echo "---------------------------- Test 52 ------------------------------" >>testtry
dvander@2762
   212
(cd $srcdir; $valgrind $pcregrep --file-offsets 'before|zero|after' ./testdata/grepinput) >>testtry
dvander@2762
   213
dvander@2762
   214
echo "---------------------------- Test 53 ------------------------------" >>testtry
dvander@2762
   215
(cd $srcdir; $valgrind $pcregrep --line-offsets 'before|zero|after' ./testdata/grepinput) >>testtry
dvander@2762
   216
dvander@2762
   217
echo "---------------------------- Test 54 -----------------------------" >>testtry
dvander@2762
   218
(cd $srcdir; $valgrind $pcregrep -f./testdata/greplist --color=always ./testdata/grepinputx) >>testtry
dvander@2762
   219
dvander@2762
   220
# Now compare the results.
dvander@2762
   221
dvander@2762
   222
$cf $srcdir/testdata/grepoutput testtry
dvander@2762
   223
if [ $? != 0 ] ; then exit 1; fi
dvander@2762
   224
dvander@2762
   225
dvander@2762
   226
# These tests require UTF-8 support
dvander@2762
   227
dvander@2762
   228
if [ $utf8 -ne 0 ] ; then
dvander@2762
   229
  echo "Testing pcregrep UTF-8 features"
dvander@2762
   230
dvander@2762
   231
  echo "---------------------------- Test U1 ------------------------------" >testtry
dvander@2762
   232
  (cd $srcdir; $valgrind $pcregrep -n -u --newline=any "^X" ./testdata/grepinput8) >>testtry
dvander@2762
   233
dvander@2762
   234
  echo "---------------------------- Test U2 ------------------------------" >>testtry
dvander@2762
   235
  (cd $srcdir; $valgrind $pcregrep -n -u -C 3 --newline=any "Match" ./testdata/grepinput8) >>testtry
dvander@2762
   236
dvander@2762
   237
  $cf $srcdir/testdata/grepoutput8 testtry
dvander@2762
   238
  if [ $? != 0 ] ; then exit 1; fi
dvander@2762
   239
dvander@2762
   240
else
dvander@2762
   241
  echo "Skipping pcregrep UTF-8 tests: no UTF-8 support in PCRE library"
dvander@2762
   242
fi
dvander@2762
   243
dvander@2762
   244
dvander@2762
   245
# We go to some contortions to try to ensure that the tests for the various
dvander@2762
   246
# newline settings will work in environments where the normal newline sequence
dvander@2762
   247
# is not \n. Do not use exported files, whose line endings might be changed.
dvander@2762
   248
# Instead, create an input file using printf so that its contents are exactly
dvander@2762
   249
# what we want. Note the messy fudge to get printf to write a string that
dvander@2762
   250
# starts with a hyphen.
dvander@2762
   251
dvander@2762
   252
echo "Testing pcregrep newline settings"
dvander@2762
   253
printf "abc\rdef\r\nghi\njkl" >testNinput
dvander@2762
   254
dvander@2762
   255
printf "%c--------------------------- Test N1 ------------------------------\r\n" - >testtry
dvander@2762
   256
$valgrind $pcregrep -n -N CR "^(abc|def|ghi|jkl)" testNinput >>testtry
dvander@2762
   257
dvander@2762
   258
printf "%c--------------------------- Test N2 ------------------------------\r\n" - >>testtry
dvander@2762
   259
$valgrind $pcregrep -n --newline=crlf "^(abc|def|ghi|jkl)" testNinput >>testtry
dvander@2762
   260
dvander@2762
   261
printf "%c--------------------------- Test N3 ------------------------------\r\n" - >>testtry
dvander@2762
   262
pattern=`printf 'def\rjkl'`
dvander@2762
   263
$valgrind $pcregrep -n --newline=cr -F "$pattern" testNinput >>testtry
dvander@2762
   264
dvander@2762
   265
printf "%c--------------------------- Test N4 ------------------------------\r\n" - >>testtry
dvander@2762
   266
pattern=`printf 'xxx\r\njkl'`
dvander@2762
   267
$valgrind $pcregrep -n --newline=crlf -F "$pattern" testNinput >>testtry
dvander@2762
   268
dvander@2762
   269
printf "%c--------------------------- Test N5 ------------------------------\r\n" - >>testtry
dvander@2762
   270
$valgrind $pcregrep -n --newline=any "^(abc|def|ghi|jkl)" testNinput >>testtry
dvander@2762
   271
dvander@2762
   272
printf "%c--------------------------- Test N6 ------------------------------\r\n" - >>testtry
dvander@2762
   273
$valgrind $pcregrep -n --newline=anycrlf "^(abc|def|ghi|jkl)" testNinput >>testtry
dvander@2762
   274
dvander@2762
   275
$cf $srcdir/testdata/grepoutputN testtry
dvander@2762
   276
if [ $? != 0 ] ; then exit 1; fi
dvander@2762
   277
dvander@2762
   278
exit 0
dvander@2762
   279
dvander@2762
   280
# End