1@echo off 2 3:: Run pcre2grep tests. The assumption is that the PCRE2 tests check the library 4:: itself. What we are checking here is the file handling and options that are 5:: supported by pcre2grep. This script must be run in the build directory. 6:: (jmh: I've only tested in the main directory, using my own builds.) 7 8setlocal enabledelayedexpansion 9 10:: Remove any non-default colouring that the caller may have set. 11 12set PCRE2GREP_COLOUR= 13set PCRE2GREP_COLOR= 14set PCREGREP_COLOUR= 15set PCREGREP_COLOR= 16set GREP_COLORS= 17set GREP_COLOR= 18 19:: Remember the current (build) directory and set the program to be tested. 20 21set builddir="%CD%" 22set pcre2grep=%builddir%\pcre2grep.exe 23set pcre2test=%builddir%\pcre2test.exe 24 25if NOT exist %pcre2grep% ( 26 echo ** %pcre2grep% does not exist. 27 exit /b 1 28) 29 30if NOT exist %pcre2test% ( 31 echo ** %pcre2test% does not exist. 32 exit /b 1 33) 34 35for /f "delims=" %%a in ('"%pcre2grep%" -V') do set pcre2grep_version=%%a 36echo Testing %pcre2grep_version% 37 38:: Set up a suitable "diff" command for comparison. Some systems have a diff 39:: that lacks a -u option. Try to deal with this; better do the test for the -b 40:: option as well. Use FC if there's no diff, taking care to ignore equality. 41 42set cf= 43set cfout= 44diff -b nul nul 2>nul && set cf=diff -b 45diff -u nul nul 2>nul && set cf=diff -u 46diff -ub nul nul 2>nul && set cf=diff -ub 47if NOT defined cf ( 48 set cf=fc /n 49 set "cfout=>testcf || (type testcf & cmd /c exit /b 1)" 50) 51 52:: Set srcdir to the current or parent directory, whichever one contains the 53:: test data. Subsequently, we run most of the pcre2grep tests in the source 54:: directory so that the file names in the output are always the same. 55 56if NOT defined srcdir set srcdir=. 57if NOT exist %srcdir%\testdata\ ( 58 if exist testdata\ ( 59 set srcdir=. 60 ) else if exist ..\testdata\ ( 61 set srcdir=.. 62 ) else if exist ..\..\testdata\ ( 63 set srcdir=..\.. 64 ) else ( 65 echo Cannot find the testdata directory 66 exit /b 1 67 ) 68) 69 70:: Check for the availability of UTF-8 support 71 72%pcre2test% -C unicode >nul 73set utf8=%ERRORLEVEL% 74 75:: Check default newline convention. If it does not include LF, force LF. 76 77for /f %%a in ('"%pcre2test%" -C newline') do set nl=%%a 78if NOT "%nl%" == "LF" if NOT "%nl%" == "ANY" if NOT "%nl%" == "ANYCRLF" ( 79 set pcre2grep=%pcre2grep% -N LF 80 echo Default newline setting forced to LF 81) 82 83:: Create a simple printf via cscript/JScript (an actual printf may translate 84:: LF to CRLF, which this one does not). 85 86echo WScript.StdOut.Write(WScript.Arguments(0).replace(/\\r/g, "\r").replace(/\\n/g, "\n")) >printf.js 87set printf=cscript //nologo printf.js 88 89:: ------ Normal tests ------ 90 91echo Testing pcre2grep main features 92 93echo ---------------------------- Test 1 ------------------------------>testtrygrep 94(pushd %srcdir% & %pcre2grep% PATTERN ./testdata/grepinput & popd) >>testtrygrep 95echo RC=^%ERRORLEVEL%>>testtrygrep 96 97echo ---------------------------- Test 2 ------------------------------>>testtrygrep 98(pushd %srcdir% & %pcre2grep% "^PATTERN" ./testdata/grepinput & popd) >>testtrygrep 99echo RC=^%ERRORLEVEL%>>testtrygrep 100 101echo ---------------------------- Test 3 ------------------------------>>testtrygrep 102(pushd %srcdir% & %pcre2grep% -in PATTERN ./testdata/grepinput & popd) >>testtrygrep 103echo RC=^%ERRORLEVEL%>>testtrygrep 104 105echo ---------------------------- Test 4 ------------------------------>>testtrygrep 106(pushd %srcdir% & %pcre2grep% -ic PATTERN ./testdata/grepinput & popd) >>testtrygrep 107echo RC=^%ERRORLEVEL%>>testtrygrep 108 109echo ---------------------------- Test 5 ------------------------------>>testtrygrep 110(pushd %srcdir% & %pcre2grep% -in PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 111echo RC=^%ERRORLEVEL%>>testtrygrep 112 113echo ---------------------------- Test 6 ------------------------------>>testtrygrep 114(pushd %srcdir% & %pcre2grep% -inh PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 115echo RC=^%ERRORLEVEL%>>testtrygrep 116 117echo ---------------------------- Test 7 ------------------------------>>testtrygrep 118(pushd %srcdir% & %pcre2grep% -il PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 119echo RC=^%ERRORLEVEL%>>testtrygrep 120 121echo ---------------------------- Test 8 ------------------------------>>testtrygrep 122(pushd %srcdir% & %pcre2grep% -l PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 123echo RC=^%ERRORLEVEL%>>testtrygrep 124 125echo ---------------------------- Test 9 ------------------------------>>testtrygrep 126(pushd %srcdir% & %pcre2grep% -q PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 127echo RC=^%ERRORLEVEL%>>testtrygrep 128 129echo ---------------------------- Test 10 ----------------------------->>testtrygrep 130(pushd %srcdir% & %pcre2grep% -q NEVER-PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 131echo RC=^%ERRORLEVEL%>>testtrygrep 132 133echo ---------------------------- Test 11 ----------------------------->>testtrygrep 134(pushd %srcdir% & %pcre2grep% -vn pattern ./testdata/grepinputx & popd) >>testtrygrep 135echo RC=^%ERRORLEVEL%>>testtrygrep 136 137echo ---------------------------- Test 12 ----------------------------->>testtrygrep 138(pushd %srcdir% & %pcre2grep% -ix pattern ./testdata/grepinputx & popd) >>testtrygrep 139echo RC=^%ERRORLEVEL%>>testtrygrep 140 141echo ---------------------------- Test 13 ----------------------------->>testtrygrep 142echo seventeen >testtemp1grep 143(pushd %srcdir% & %pcre2grep% -f./testdata/greplist -f %builddir%\testtemp1grep ./testdata/grepinputx & popd) >>testtrygrep 144echo RC=^%ERRORLEVEL%>>testtrygrep 145 146echo ---------------------------- Test 14 ----------------------------->>testtrygrep 147(pushd %srcdir% & %pcre2grep% -w pat ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 148echo RC=^%ERRORLEVEL%>>testtrygrep 149 150echo ---------------------------- Test 15 ----------------------------->>testtrygrep 151(pushd %srcdir% & %pcre2grep% "abc^*" ./testdata/grepinput & popd) >>testtrygrep 2>&1 152echo RC=^%ERRORLEVEL%>>testtrygrep 153 154echo ---------------------------- Test 16 ----------------------------->>testtrygrep 155(pushd %srcdir% & %pcre2grep% abc ./testdata/grepinput ./testdata/nonexistfile & popd) >>testtrygrep 2>&1 156echo RC=^%ERRORLEVEL%>>testtrygrep 157 158echo ---------------------------- Test 17 ----------------------------->>testtrygrep 159(pushd %srcdir% & %pcre2grep% -M "the\noutput" ./testdata/grepinput & popd) >>testtrygrep 160echo RC=^%ERRORLEVEL%>>testtrygrep 161 162echo ---------------------------- Test 18 ----------------------------->>testtrygrep 163(pushd %srcdir% & %pcre2grep% -Mn "(the\noutput|dog\.\n--)" ./testdata/grepinput & popd) >>testtrygrep 164echo RC=^%ERRORLEVEL%>>testtrygrep 165 166echo ---------------------------- Test 19 ----------------------------->>testtrygrep 167(pushd %srcdir% & %pcre2grep% -Mix "Pattern" ./testdata/grepinputx & popd) >>testtrygrep 168echo RC=^%ERRORLEVEL%>>testtrygrep 169 170echo ---------------------------- Test 20 ----------------------------->>testtrygrep 171(pushd %srcdir% & %pcre2grep% -Mixn "complete pair\nof lines" ./testdata/grepinputx & popd) >>testtrygrep 172echo RC=^%ERRORLEVEL%>>testtrygrep 173 174echo ---------------------------- Test 21 ----------------------------->>testtrygrep 175(pushd %srcdir% & %pcre2grep% -nA3 "four" ./testdata/grepinputx & popd) >>testtrygrep 176echo RC=^%ERRORLEVEL%>>testtrygrep 177 178echo ---------------------------- Test 22 ----------------------------->>testtrygrep 179(pushd %srcdir% & %pcre2grep% -nB3 "four" ./testdata/grepinputx & popd) >>testtrygrep 180echo RC=^%ERRORLEVEL%>>testtrygrep 181 182echo ---------------------------- Test 23 ----------------------------->>testtrygrep 183(pushd %srcdir% & %pcre2grep% -C3 "four" ./testdata/grepinputx & popd) >>testtrygrep 184echo RC=^%ERRORLEVEL%>>testtrygrep 185 186echo ---------------------------- Test 24 ----------------------------->>testtrygrep 187(pushd %srcdir% & %pcre2grep% -A9 "four" ./testdata/grepinputx & popd) >>testtrygrep 188echo RC=^%ERRORLEVEL%>>testtrygrep 189 190echo ---------------------------- Test 25 ----------------------------->>testtrygrep 191(pushd %srcdir% & %pcre2grep% -nB9 "four" ./testdata/grepinputx & popd) >>testtrygrep 192echo RC=^%ERRORLEVEL%>>testtrygrep 193 194echo ---------------------------- Test 26 ----------------------------->>testtrygrep 195(pushd %srcdir% & %pcre2grep% -A9 -B9 "four" ./testdata/grepinputx & popd) >>testtrygrep 196echo RC=^%ERRORLEVEL%>>testtrygrep 197 198echo ---------------------------- Test 27 ----------------------------->>testtrygrep 199(pushd %srcdir% & %pcre2grep% -A10 "four" ./testdata/grepinputx & popd) >>testtrygrep 200echo RC=^%ERRORLEVEL%>>testtrygrep 201 202echo ---------------------------- Test 28 ----------------------------->>testtrygrep 203(pushd %srcdir% & %pcre2grep% -nB10 "four" ./testdata/grepinputx & popd) >>testtrygrep 204echo RC=^%ERRORLEVEL%>>testtrygrep 205 206echo ---------------------------- Test 29 ----------------------------->>testtrygrep 207(pushd %srcdir% & %pcre2grep% -C12 -B10 "four" ./testdata/grepinputx & popd) >>testtrygrep 208echo RC=^%ERRORLEVEL%>>testtrygrep 209 210echo ---------------------------- Test 30 ----------------------------->>testtrygrep 211(pushd %srcdir% & %pcre2grep% -inB3 "pattern" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 212echo RC=^%ERRORLEVEL%>>testtrygrep 213 214echo ---------------------------- Test 31 ----------------------------->>testtrygrep 215(pushd %srcdir% & %pcre2grep% -inA3 "pattern" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 216echo RC=^%ERRORLEVEL%>>testtrygrep 217 218echo ---------------------------- Test 32 ----------------------------->>testtrygrep 219(pushd %srcdir% & %pcre2grep% -L "fox" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 220echo RC=^%ERRORLEVEL%>>testtrygrep 221 222echo ---------------------------- Test 33 ----------------------------->>testtrygrep 223(pushd %srcdir% & %pcre2grep% "fox" ./testdata/grepnonexist & popd) >>testtrygrep 2>&1 224echo RC=^%ERRORLEVEL%>>testtrygrep 225 226echo ---------------------------- Test 34 ----------------------------->>testtrygrep 227(pushd %srcdir% & %pcre2grep% -s "fox" ./testdata/grepnonexist & popd) >>testtrygrep 2>&1 228echo RC=^%ERRORLEVEL%>>testtrygrep 229 230echo ---------------------------- Test 35 ----------------------------->>testtrygrep 231(pushd %srcdir% & %pcre2grep% -L -r --include=grepinputx --include grepinput8 --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep 232echo RC=^%ERRORLEVEL%>>testtrygrep 233 234echo ---------------------------- Test 36 ----------------------------->>testtrygrep 235(pushd %srcdir% & %pcre2grep% -L -r --include=grepinput --exclude "grepinput$" --exclude=grepinput8 --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep 236echo RC=^%ERRORLEVEL%>>testtrygrep 237 238echo ---------------------------- Test 37 ----------------------------->>testtrygrep 239(pushd %srcdir% & %pcre2grep% "^(a+)*\d" ./testdata/grepinput & popd) >>testtrygrep 2>teststderrgrep 240echo RC=^%ERRORLEVEL%>>testtrygrep 241echo ======== STDERR ========>>testtrygrep 242type teststderrgrep >>testtrygrep 243 244echo ---------------------------- Test 38 ------------------------------>>testtrygrep 245(pushd %srcdir% & %pcre2grep% ">\x00<" ./testdata/grepinput & popd) >>testtrygrep 246echo RC=^%ERRORLEVEL%>>testtrygrep 247 248echo ---------------------------- Test 39 ------------------------------>>testtrygrep 249(pushd %srcdir% & %pcre2grep% -A1 "before the binary zero" ./testdata/grepinput & popd) >>testtrygrep 250echo RC=^%ERRORLEVEL%>>testtrygrep 251 252echo ---------------------------- Test 40 ------------------------------>>testtrygrep 253(pushd %srcdir% & %pcre2grep% -B1 "after the binary zero" ./testdata/grepinput & popd) >>testtrygrep 254echo RC=^%ERRORLEVEL%>>testtrygrep 255 256echo ---------------------------- Test 41 ------------------------------>>testtrygrep 257(pushd %srcdir% & %pcre2grep% -B1 -o "\w+ the binary zero" ./testdata/grepinput & popd) >>testtrygrep 258echo RC=^%ERRORLEVEL%>>testtrygrep 259 260echo ---------------------------- Test 42 ------------------------------>>testtrygrep 261(pushd %srcdir% & %pcre2grep% -B1 -onH "\w+ the binary zero" ./testdata/grepinput & popd) >>testtrygrep 262echo RC=^%ERRORLEVEL%>>testtrygrep 263 264echo ---------------------------- Test 43 ------------------------------>>testtrygrep 265(pushd %srcdir% & %pcre2grep% -on "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep 266echo RC=^%ERRORLEVEL%>>testtrygrep 267 268echo ---------------------------- Test 44 ------------------------------>>testtrygrep 269(pushd %srcdir% & %pcre2grep% -on -e before -ezero -e after ./testdata/grepinput & popd) >>testtrygrep 270echo RC=^%ERRORLEVEL%>>testtrygrep 271 272echo ---------------------------- Test 45 ------------------------------>>testtrygrep 273(pushd %srcdir% & %pcre2grep% -on -f ./testdata/greplist -e binary ./testdata/grepinput & popd) >>testtrygrep 274echo RC=^%ERRORLEVEL%>>testtrygrep 275 276echo ---------------------------- Test 46 ------------------------------>>testtrygrep 277(pushd %srcdir% & %pcre2grep% -eabc -e "(unclosed" ./testdata/grepinput & popd) >>testtrygrep 2>&1 278echo RC=^%ERRORLEVEL%>>testtrygrep 279 280echo ---------------------------- Test 47 ------------------------------>>testtrygrep 281(pushd %srcdir% & %pcre2grep% -Fx AB.VE^ 282 283elephant ./testdata/grepinput & popd) >>testtrygrep 284echo RC=^%ERRORLEVEL%>>testtrygrep 285 286echo ---------------------------- Test 48 ------------------------------>>testtrygrep 287(pushd %srcdir% & %pcre2grep% -F AB.VE^ 288 289elephant ./testdata/grepinput & popd) >>testtrygrep 290echo RC=^%ERRORLEVEL%>>testtrygrep 291 292echo ---------------------------- Test 49 ------------------------------>>testtrygrep 293(pushd %srcdir% & %pcre2grep% -F -e DATA -e AB.VE^ 294 295elephant ./testdata/grepinput & popd) >>testtrygrep 296echo RC=^%ERRORLEVEL%>>testtrygrep 297 298echo ---------------------------- Test 50 ------------------------------>>testtrygrep 299(pushd %srcdir% & %pcre2grep% "^(abc|def|ghi|jkl)" ./testdata/grepinputx & popd) >>testtrygrep 300echo RC=^%ERRORLEVEL%>>testtrygrep 301 302echo ---------------------------- Test 51 ------------------------------>>testtrygrep 303(pushd %srcdir% & %pcre2grep% -Mv "brown\sfox" ./testdata/grepinputv & popd) >>testtrygrep 304echo RC=^%ERRORLEVEL%>>testtrygrep 305 306echo ---------------------------- Test 52 ------------------------------>>testtrygrep 307(pushd %srcdir% & %pcre2grep% --colour=always jumps ./testdata/grepinputv & popd) >>testtrygrep 308echo RC=^%ERRORLEVEL%>>testtrygrep 309 310echo ---------------------------- Test 53 ------------------------------>>testtrygrep 311(pushd %srcdir% & %pcre2grep% --file-offsets "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep 312echo RC=^%ERRORLEVEL%>>testtrygrep 313 314echo ---------------------------- Test 54 ------------------------------>>testtrygrep 315(pushd %srcdir% & %pcre2grep% --line-offsets "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep 316echo RC=^%ERRORLEVEL%>>testtrygrep 317 318echo ---------------------------- Test 55 ----------------------------->>testtrygrep 319(pushd %srcdir% & %pcre2grep% -f./testdata/greplist --color=always ./testdata/grepinputx & popd) >>testtrygrep 320echo RC=^%ERRORLEVEL%>>testtrygrep 321 322echo ---------------------------- Test 56 ----------------------------->>testtrygrep 323(pushd %srcdir% & %pcre2grep% -c lazy ./testdata/grepinput* & popd) >>testtrygrep 324echo RC=^%ERRORLEVEL%>>testtrygrep 325 326echo ---------------------------- Test 57 ----------------------------->>testtrygrep 327(pushd %srcdir% & %pcre2grep% -c -l lazy ./testdata/grepinput* & popd) >>testtrygrep 328echo RC=^%ERRORLEVEL%>>testtrygrep 329 330echo ---------------------------- Test 58 ----------------------------->>testtrygrep 331(pushd %srcdir% & %pcre2grep% --regex=PATTERN ./testdata/grepinput & popd) >>testtrygrep 332echo RC=^%ERRORLEVEL%>>testtrygrep 333 334echo ---------------------------- Test 59 ----------------------------->>testtrygrep 335(pushd %srcdir% & %pcre2grep% --regexp=PATTERN ./testdata/grepinput & popd) >>testtrygrep 336echo RC=^%ERRORLEVEL%>>testtrygrep 337 338echo ---------------------------- Test 60 ----------------------------->>testtrygrep 339(pushd %srcdir% & %pcre2grep% --regex PATTERN ./testdata/grepinput & popd) >>testtrygrep 340echo RC=^%ERRORLEVEL%>>testtrygrep 341 342echo ---------------------------- Test 61 ----------------------------->>testtrygrep 343(pushd %srcdir% & %pcre2grep% --regexp PATTERN ./testdata/grepinput & popd) >>testtrygrep 344echo RC=^%ERRORLEVEL%>>testtrygrep 345 346echo ---------------------------- Test 62 ----------------------------->>testtrygrep 347(pushd %srcdir% & %pcre2grep% --match-limit=1000 --no-jit -M "This is a file(.|\R)*file." ./testdata/grepinput & popd) >>testtrygrep 2>&1 348echo RC=^%ERRORLEVEL%>>testtrygrep 349 350echo ---------------------------- Test 63 ----------------------------->>testtrygrep 351(pushd %srcdir% & %pcre2grep% --recursion-limit=1000 --no-jit -M "This is a file(.|\R)*file." ./testdata/grepinput & popd) >>testtrygrep 2>&1 352echo RC=^%ERRORLEVEL%>>testtrygrep 353 354echo ---------------------------- Test 64 ------------------------------>>testtrygrep 355(pushd %srcdir% & %pcre2grep% -o1 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep 356echo RC=^%ERRORLEVEL%>>testtrygrep 357 358echo ---------------------------- Test 65 ------------------------------>>testtrygrep 359(pushd %srcdir% & %pcre2grep% -o2 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep 360echo RC=^%ERRORLEVEL%>>testtrygrep 361 362echo ---------------------------- Test 66 ------------------------------>>testtrygrep 363(pushd %srcdir% & %pcre2grep% -o3 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep 364echo RC=^%ERRORLEVEL%>>testtrygrep 365 366echo ---------------------------- Test 67 ------------------------------>>testtrygrep 367(pushd %srcdir% & %pcre2grep% -o12 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep 368echo RC=^%ERRORLEVEL%>>testtrygrep 369 370echo ---------------------------- Test 68 ------------------------------>>testtrygrep 371(pushd %srcdir% & %pcre2grep% --only-matching=2 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep 372echo RC=^%ERRORLEVEL%>>testtrygrep 373 374echo ---------------------------- Test 69 ----------------------------->>testtrygrep 375(pushd %srcdir% & %pcre2grep% -vn --colour=always pattern ./testdata/grepinputx & popd) >>testtrygrep 376echo RC=^%ERRORLEVEL%>>testtrygrep 377 378echo ---------------------------- Test 70 ----------------------------->>testtrygrep 379(pushd %srcdir% & %pcre2grep% --color=always -M "triple:\t.*\n\n" ./testdata/grepinput3 & popd) >>testtrygrep 380echo RC=^%ERRORLEVEL%>>testtrygrep 381 382echo ---------------------------- Test 71 ----------------------------->>testtrygrep 383(pushd %srcdir% & %pcre2grep% -o "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep 384echo RC=^%ERRORLEVEL%>>testtrygrep 385 386echo ---------------------------- Test 72 ----------------------------->>testtrygrep 387(pushd %srcdir% & %pcre2grep% --color=always "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep 388echo RC=^%ERRORLEVEL%>>testtrygrep 389 390echo ---------------------------- Test 73 ----------------------------->>testtrygrep 391(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep 392echo RC=^%ERRORLEVEL%>>testtrygrep 393 394echo ---------------------------- Test 74 ----------------------------->>testtrygrep 395(pushd %srcdir% & %pcre2grep% -o "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep 396echo RC=^%ERRORLEVEL%>>testtrygrep 397 398echo ---------------------------- Test 75 ----------------------------->>testtrygrep 399(pushd %srcdir% & %pcre2grep% --color=always "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep 400echo RC=^%ERRORLEVEL%>>testtrygrep 401 402echo ---------------------------- Test 76 ----------------------------->>testtrygrep 403(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep 404echo RC=^%ERRORLEVEL%>>testtrygrep 405 406echo ---------------------------- Test 77 ----------------------------->>testtrygrep 407(pushd %srcdir% & %pcre2grep% -o "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep 408echo RC=^%ERRORLEVEL%>>testtrygrep 409 410echo ---------------------------- Test 78 ----------------------------->>testtrygrep 411(pushd %srcdir% & %pcre2grep% --color=always "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep 412echo RC=^%ERRORLEVEL%>>testtrygrep 413 414echo ---------------------------- Test 79 ----------------------------->>testtrygrep 415(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep 416echo RC=^%ERRORLEVEL%>>testtrygrep 417 418echo ---------------------------- Test 80 ----------------------------->>testtrygrep 419(pushd %srcdir% & %pcre2grep% -o "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep 420echo RC=^%ERRORLEVEL%>>testtrygrep 421 422echo ---------------------------- Test 81 ----------------------------->>testtrygrep 423(pushd %srcdir% & %pcre2grep% --color=always "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep 424echo RC=^%ERRORLEVEL%>>testtrygrep 425 426echo ---------------------------- Test 82 ----------------------------->>testtrygrep 427(pushd %srcdir% & %pcre2grep% -o --colour=always "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep 428echo RC=^%ERRORLEVEL%>>testtrygrep 429 430echo ---------------------------- Test 83 ----------------------------->>testtrygrep 431(pushd %srcdir% & %pcre2grep% --buffer-size=10 --max-buffer-size=100 "^a" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1 432echo RC=^%ERRORLEVEL%>>testtrygrep 433 434echo ---------------------------- Test 84 ----------------------------->>testtrygrep 435echo testdata/grepinput3 >testtemp1grep 436(pushd %srcdir% & %pcre2grep% --file-list ./testdata/grepfilelist --file-list %builddir%\testtemp1grep "fox|complete|t7" & popd) >>testtrygrep 2>&1 437echo RC=^%ERRORLEVEL%>>testtrygrep 438 439echo ---------------------------- Test 85 ----------------------------->>testtrygrep 440(pushd %srcdir% & %pcre2grep% --file-list=./testdata/grepfilelist "dolor" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1 441echo RC=^%ERRORLEVEL%>>testtrygrep 442 443echo ---------------------------- Test 86 ----------------------------->>testtrygrep 444(pushd %srcdir% & %pcre2grep% "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1 445echo RC=^%ERRORLEVEL%>>testtrygrep 446 447echo ---------------------------- Test 87 ----------------------------->>testtrygrep 448(pushd %srcdir% & %pcre2grep% "cat" ./testdata/grepbinary & popd) >>testtrygrep 2>&1 449echo RC=^%ERRORLEVEL%>>testtrygrep 450 451echo ---------------------------- Test 88 ----------------------------->>testtrygrep 452(pushd %srcdir% & %pcre2grep% -v "cat" ./testdata/grepbinary & popd) >>testtrygrep 2>&1 453echo RC=^%ERRORLEVEL%>>testtrygrep 454 455echo ---------------------------- Test 89 ----------------------------->>testtrygrep 456(pushd %srcdir% & %pcre2grep% -I "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1 457echo RC=^%ERRORLEVEL%>>testtrygrep 458 459echo ---------------------------- Test 90 ----------------------------->>testtrygrep 460(pushd %srcdir% & %pcre2grep% --binary-files=without-match "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1 461echo RC=^%ERRORLEVEL%>>testtrygrep 462 463echo ---------------------------- Test 91 ----------------------------->>testtrygrep 464(pushd %srcdir% & %pcre2grep% -a "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1 465echo RC=^%ERRORLEVEL%>>testtrygrep 466 467echo ---------------------------- Test 92 ----------------------------->>testtrygrep 468(pushd %srcdir% & %pcre2grep% --binary-files=text "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1 469echo RC=^%ERRORLEVEL%>>testtrygrep 470 471echo ---------------------------- Test 93 ----------------------------->>testtrygrep 472(pushd %srcdir% & %pcre2grep% --text "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1 473echo RC=^%ERRORLEVEL%>>testtrygrep 474 475echo ---------------------------- Test 94 ----------------------------->>testtrygrep 476(pushd %srcdir% & %pcre2grep% -L -r --include=grepinputx --include grepinput8 "fox" ./testdata/grepinput* | sort & popd) >>testtrygrep 477echo RC=^%ERRORLEVEL%>>testtrygrep 478 479echo ---------------------------- Test 95 ----------------------------->>testtrygrep 480(pushd %srcdir% & %pcre2grep% --file-list ./testdata/grepfilelist --exclude grepinputv "fox|complete" & popd) >>testtrygrep 2>&1 481echo RC=^%ERRORLEVEL%>>testtrygrep 482 483echo ---------------------------- Test 96 ----------------------------->>testtrygrep 484(pushd %srcdir% & %pcre2grep% -L -r --include-dir=testdata --exclude "^^(?^!grepinput)" "fox" ./test* | sort & popd) >>testtrygrep 485echo RC=^%ERRORLEVEL%>>testtrygrep 486 487echo ---------------------------- Test 97 ----------------------------->>testtrygrep 488echo grepinput$>testtemp1grep 489echo grepinput8>>testtemp1grep 490(pushd %srcdir% & %pcre2grep% -L -r --include=grepinput --exclude-from %builddir%\testtemp1grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep 491echo RC=^%ERRORLEVEL%>>testtrygrep 492 493echo ---------------------------- Test 98 ----------------------------->>testtrygrep 494echo grepinput$>testtemp1grep 495echo grepinput8>>testtemp1grep 496(pushd %srcdir% & %pcre2grep% -L -r --exclude=grepinput3 --include=grepinput --exclude-from %builddir%\testtemp1grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep 497echo RC=^%ERRORLEVEL%>>testtrygrep 498 499echo ---------------------------- Test 99 ----------------------------->>testtrygrep 500echo grepinput$>testtemp1grep 501echo grepinput8>testtemp2grep 502(pushd %srcdir% & %pcre2grep% -L -r --include grepinput --exclude-from %builddir%\testtemp1grep --exclude-from=%builddir%\testtemp2grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep 503echo RC=^%ERRORLEVEL%>>testtrygrep 504 505echo ---------------------------- Test 100 ------------------------------>>testtrygrep 506(pushd %srcdir% & %pcre2grep% -Ho2 --only-matching=1 -o3 "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep 507echo RC=^%ERRORLEVEL%>>testtrygrep 508 509echo ---------------------------- Test 101 ------------------------------>>testtrygrep 510(pushd %srcdir% & %pcre2grep% -o3 -Ho2 -o12 --only-matching=1 -o3 --colour=always --om-separator="|" "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep 511echo RC=^%ERRORLEVEL%>>testtrygrep 512 513echo ---------------------------- Test 102 ----------------------------->>testtrygrep 514(pushd %srcdir% & %pcre2grep% -n "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1 515echo RC=^%ERRORLEVEL%>>testtrygrep 516 517echo ---------------------------- Test 103 ----------------------------->>testtrygrep 518(pushd %srcdir% & %pcre2grep% --only-matching "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1 519echo RC=^%ERRORLEVEL%>>testtrygrep 520 521echo ---------------------------- Test 104 ----------------------------->>testtrygrep 522(pushd %srcdir% & %pcre2grep% -n --only-matching "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1 523echo RC=^%ERRORLEVEL%>>testtrygrep 524 525echo ---------------------------- Test 105 ----------------------------->>testtrygrep 526(pushd %srcdir% & %pcre2grep% --colour=always "ipsum|" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1 527echo RC=^%ERRORLEVEL%>>testtrygrep 528 529echo ---------------------------- Test 106 ----------------------------->>testtrygrep 530(pushd %srcdir% & echo a| %pcre2grep% -M "|a" & popd) >>testtrygrep 2>&1 531echo RC=^%ERRORLEVEL%>>testtrygrep 532 533echo ---------------------------- Test 107 ----------------------------->>testtrygrep 534echo a>testtemp1grep 535echo aaaaa>>testtemp1grep 536(pushd %srcdir% & %pcre2grep% --line-offsets "(?<=\Ka)" %builddir%\testtemp1grep & popd) >>testtrygrep 2>&1 537echo RC=^%ERRORLEVEL%>>testtrygrep 538 539echo ---------------------------- Test 108 ------------------------------>>testtrygrep 540(pushd %srcdir% & %pcre2grep% -lq PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep 541echo RC=^%ERRORLEVEL%>>testtrygrep 542 543echo ---------------------------- Test 109 ----------------------------->>testtrygrep 544(pushd %srcdir% & %pcre2grep% -cq lazy ./testdata/grepinput* & popd) >>testtrygrep 545echo RC=^%ERRORLEVEL%>>testtrygrep 546 547echo ---------------------------- Test 110 ----------------------------->>testtrygrep 548(pushd %srcdir% & %pcre2grep% --om-separator / -Mo0 -o1 -o2 "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep 549echo RC=^%ERRORLEVEL%>>testtrygrep 550 551echo ---------------------------- Test 111 ----------------------------->>testtrygrep 552(pushd %srcdir% & %pcre2grep% --line-offsets -M "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep 553echo RC=^%ERRORLEVEL%>>testtrygrep 554 555echo ---------------------------- Test 112 ----------------------------->>testtrygrep 556(pushd %srcdir% & %pcre2grep% --file-offsets -M "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep 557echo RC=^%ERRORLEVEL%>>testtrygrep 558 559echo ---------------------------- Test 113 ----------------------------->>testtrygrep 560(pushd %srcdir% & %pcre2grep% --total-count "the" testdata/grepinput* & popd) >>testtrygrep 561echo RC=^%ERRORLEVEL%>>testtrygrep 562 563echo ---------------------------- Test 114 ----------------------------->>testtrygrep 564(pushd %srcdir% & %pcre2grep% -tc "the" testdata/grepinput* & popd) >>testtrygrep 565echo RC=^%ERRORLEVEL%>>testtrygrep 566 567echo ---------------------------- Test 115 ----------------------------->>testtrygrep 568(pushd %srcdir% & %pcre2grep% -tlc "the" testdata/grepinput* & popd) >>testtrygrep 569echo RC=^%ERRORLEVEL%>>testtrygrep 570 571echo ---------------------------- Test 116 ----------------------------->>testtrygrep 572(pushd %srcdir% & %pcre2grep% -th "the" testdata/grepinput* & popd) >>testtrygrep 573echo RC=^%ERRORLEVEL%>>testtrygrep 574 575echo ---------------------------- Test 117 ----------------------------->>testtrygrep 576(pushd %srcdir% & %pcre2grep% -tch "the" testdata/grepinput* & popd) >>testtrygrep 577echo RC=^%ERRORLEVEL%>>testtrygrep 578 579echo ---------------------------- Test 118 ----------------------------->>testtrygrep 580(pushd %srcdir% & %pcre2grep% -tL "the" testdata/grepinput* & popd) >>testtrygrep 581echo RC=^%ERRORLEVEL%>>testtrygrep 582 583echo ---------------------------- Test 119 ----------------------------->>testtrygrep 584%printf% "123\n456\n789\n---abc\ndef\nxyz\n---\n" >testNinputgrep 585%pcre2grep% -Mo "(\n|[^-])*---" testNinputgrep >>testtrygrep 586echo RC=^%ERRORLEVEL%>>testtrygrep 587 588echo ---------------------------- Test 120 ------------------------------>>testtrygrep 589(pushd %srcdir% & %pcre2grep% -HO "$0:$2$1$3" "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep 590echo RC=^%ERRORLEVEL%>>testtrygrep 591 592:: Now compare the results. 593 594%cf% %srcdir%\testdata\grepoutput testtrygrep %cfout% 595if ERRORLEVEL 1 exit /b 1 596 597 598:: These tests require UTF-8 support 599 600if %utf8% neq 0 ( 601 echo Testing pcre2grep UTF-8 features 602 603 echo ---------------------------- Test U1 ------------------------------>testtrygrep 604 (pushd %srcdir% & %pcre2grep% -n -u --newline=any "^X" ./testdata/grepinput8 & popd) >>testtrygrep 605 echo RC=^%ERRORLEVEL%>>testtrygrep 606 607 echo ---------------------------- Test U2 ------------------------------>>testtrygrep 608 (pushd %srcdir% & %pcre2grep% -n -u -C 3 --newline=any "Match" ./testdata/grepinput8 & popd) >>testtrygrep 609 echo RC=^%ERRORLEVEL%>>testtrygrep 610 611 echo ---------------------------- Test U3 ------------------------------>>testtrygrep 612 (pushd %srcdir% & %pcre2grep% --line-offsets -u --newline=any "(?<=\K\x{17f})" ./testdata/grepinput8 & popd) >>testtrygrep 613 echo RC=^%ERRORLEVEL%>>testtrygrep 614 615 %cf% %srcdir%\testdata\grepoutput8 testtrygrep %cfout% 616 if ERRORLEVEL 1 exit /b 1 617 618) else ( 619 echo Skipping pcre2grep UTF-8 tests: no UTF-8 support in PCRE2 library 620) 621 622 623:: We go to some contortions to try to ensure that the tests for the various 624:: newline settings will work in environments where the normal newline sequence 625:: is not \n. Do not use exported files, whose line endings might be changed. 626:: Instead, create an input file so that its contents are exactly what we want. 627:: These tests are run in the build directory. 628 629echo Testing pcre2grep newline settings 630%printf% "abc\rdef\r\nghi\njkl" >testNinputgrep 631 632echo ---------------------------- Test N1 ------------------------------>testtrygrep 633%pcre2grep% -n -N CR "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep 634 635echo ---------------------------- Test N2 ------------------------------>>testtrygrep 636%pcre2grep% -n --newline=crlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep 637 638echo ---------------------------- Test N3 ------------------------------>>testtrygrep 639for /f %%a in ('%printf% "def\rjkl"') do set pattern=%%a 640%pcre2grep% -n --newline=cr -F "!pattern!" testNinputgrep >>testtrygrep 641 642echo ---------------------------- Test N4 ------------------------------>>testtrygrep 643%pcre2grep% -n --newline=crlf -F -f %srcdir%/testdata/greppatN4 testNinputgrep >>testtrygrep 644 645echo ---------------------------- Test N5 ------------------------------>>testtrygrep 646%pcre2grep% -n --newline=any "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep 647 648echo ---------------------------- Test N6 ------------------------------>>testtrygrep 649%pcre2grep% -n --newline=anycrlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep 650 651%cf% %srcdir%\testdata\grepoutputN testtrygrep %cfout% 652if ERRORLEVEL 1 exit /b 1 653 654:: If pcre2grep supports script callouts, run some tests on them. 655 656%pcre2grep% --help | %pcre2grep% -q "callout scripts in patterns are supported" 657if %ERRORLEVEL% equ 0 ( 658 echo Testing pcre2grep script callouts 659 %pcre2grep% "(T)(..(.))(?C'cmd|/c echo|Arg1: [$1] [$2] [$3]|Arg2: ^$|${1}^$| ($4) ($14) ($0)')()" %srcdir%/testdata/grepinputv >testtrygrep 660 %pcre2grep% "(T)(..(.))()()()()()()()(..)(?C'cmd|/c echo|Arg1: [$11] [${11}]')" %srcdir%/testdata/grepinputv >>testtrygrep 661 %pcre2grep% "(T)(?C'|$0:$1$n')" %srcdir%/testdata/grepinputv >>testtrygrep 662 %pcre2grep% "(T)(?C'|$1$n')(*F)" %srcdir%/testdata/grepinputv >>testtrygrep 663 %pcre2grep% --help | %pcre2grep% -q "Non-script callout scripts in patterns are supported" 664 if %ERRORLEVEL% equ 0 ( 665 %cf% %srcdir%\testdata\grepoutputCN testtrygrep %cfout% 666 ) else ( 667 %cf% %srcdir%\testdata\grepoutputC testtrygrep %cfout% 668 ) 669 if ERRORLEVEL 1 exit /b 1 670) else ( 671 echo Script callouts are not supported 672) 673 674:: Finally, some tests to exercise code that is not tested above, just to be 675:: sure that it runs OK. Doing this improves the coverage statistics. The output 676:: is not checked. 677 678echo Testing miscellaneous pcre2grep arguments (unchecked) 679%printf% "" >testtrygrep 680call :checkspecial "-xxxxx" 2 || exit /b 1 681call :checkspecial "--help" 0 || exit /b 1 682call :checkspecial "--line-buffered --colour=auto abc nul" 1 || exit /b 1 683 684:: Clean up local working files 685del testcf printf.js testNinputgrep teststderrgrep testtrygrep testtemp1grep testtemp2grep 686 687exit /b 0 688 689:: ------ Function to run and check a special pcre2grep arguments test ------- 690 691:checkspecial 692 %pcre2grep% %~1 >>testtrygrep 2>&1 693 if %ERRORLEVEL% neq %2 ( 694 echo ** pcre2grep %~1 failed - check testtrygrep 695 exit /b 1 696 ) 697 exit /b 0 698 699:: End 700