new upstream release (3.3.0); modify package compatibility for Stretch
[ossec-hids.git] / src / external / pcre2-10.32 / RunGrepTest.bat
diff --git a/src/external/pcre2-10.32/RunGrepTest.bat b/src/external/pcre2-10.32/RunGrepTest.bat
new file mode 100644 (file)
index 0000000..50a9644
--- /dev/null
@@ -0,0 +1,694 @@
+@echo off\r
+\r
+:: Run pcre2grep tests. The assumption is that the PCRE2 tests check the library\r
+:: itself. What we are checking here is the file handling and options that are\r
+:: supported by pcre2grep. This script must be run in the build directory.\r
+:: (jmh: I've only tested in the main directory, using my own builds.)\r
+\r
+setlocal enabledelayedexpansion\r
+\r
+:: Remove any non-default colouring that the caller may have set.\r
+\r
+set PCRE2GREP_COLOUR=\r
+set PCRE2GREP_COLOR=\r
+set PCREGREP_COLOUR=\r
+set PCREGREP_COLOR=\r
+set GREP_COLORS=\r
+set GREP_COLOR=\r
+\r
+:: Remember the current (build) directory and set the program to be tested.\r
+\r
+set builddir="%CD%"\r
+set pcre2grep=%builddir%\pcre2grep.exe\r
+set pcre2test=%builddir%\pcre2test.exe\r
+\r
+if NOT exist %pcre2grep% (\r
+  echo ** %pcre2grep% does not exist.\r
+  exit /b 1\r
+)\r
+\r
+if NOT exist %pcre2test% (\r
+  echo ** %pcre2test% does not exist.\r
+  exit /b 1\r
+)\r
+\r
+for /f "delims=" %%a in ('"%pcre2grep%" -V') do set pcre2grep_version=%%a\r
+echo Testing %pcre2grep_version%\r
+\r
+:: Set up a suitable "diff" command for comparison. Some systems have a diff\r
+:: that lacks a -u option. Try to deal with this; better do the test for the -b\r
+:: option as well. Use FC if there's no diff, taking care to ignore equality.\r
+\r
+set cf=\r
+set cfout=\r
+diff -b  nul nul 2>nul && set cf=diff -b\r
+diff -u  nul nul 2>nul && set cf=diff -u\r
+diff -ub nul nul 2>nul && set cf=diff -ub\r
+if NOT defined cf (\r
+  set cf=fc /n\r
+  set "cfout=>testcf || (type testcf & cmd /c exit /b 1)"\r
+)\r
+\r
+:: Set srcdir to the current or parent directory, whichever one contains the\r
+:: test data. Subsequently, we run most of the pcre2grep tests in the source\r
+:: directory so that the file names in the output are always the same.\r
+\r
+if NOT defined srcdir set srcdir=.\r
+if NOT exist %srcdir%\testdata\ (\r
+  if exist testdata\ (\r
+    set srcdir=.\r
+  ) else if exist ..\testdata\ (\r
+    set srcdir=..\r
+  ) else if exist ..\..\testdata\ (\r
+    set srcdir=..\..\r
+  ) else (\r
+    echo Cannot find the testdata directory\r
+    exit /b 1\r
+  )\r
+)\r
+\r
+:: Check for the availability of UTF-8 support\r
+\r
+%pcre2test% -C unicode >nul\r
+set utf8=%ERRORLEVEL%\r
+\r
+:: Check default newline convention. If it does not include LF, force LF.\r
+\r
+for /f %%a in ('"%pcre2test%" -C newline') do set nl=%%a\r
+if NOT "%nl%" == "LF" if NOT "%nl%" == "ANY" if NOT "%nl%" == "ANYCRLF" (\r
+  set pcre2grep=%pcre2grep% -N LF\r
+  echo Default newline setting forced to LF\r
+)\r
+\r
+:: Create a simple printf via cscript/JScript (an actual printf may translate\r
+:: LF to CRLF, which this one does not).\r
+\r
+echo WScript.StdOut.Write(WScript.Arguments(0).replace(/\\r/g, "\r").replace(/\\n/g, "\n")) >printf.js\r
+set printf=cscript //nologo printf.js\r
+\r
+:: ------ Normal tests ------\r
+\r
+echo Testing pcre2grep main features\r
+\r
+echo ---------------------------- Test 1 ------------------------------>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% PATTERN ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 2 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% "^PATTERN" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 3 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -in PATTERN ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 4 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -ic PATTERN ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 5 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -in PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 6 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -inh PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 7 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -il PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 8 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -l PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 9 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -q PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 10 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -q NEVER-PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 11 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -vn pattern ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 12 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -ix pattern ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 13 ----------------------------->>testtrygrep\r
+echo seventeen >testtemp1grep\r
+(pushd %srcdir% & %pcre2grep% -f./testdata/greplist -f %builddir%\testtemp1grep ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 14 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -w pat ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 15 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% "abc^*" ./testdata/grepinput & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 16 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% abc ./testdata/grepinput ./testdata/nonexistfile & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 17 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -M "the\noutput" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 18 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -Mn "(the\noutput|dog\.\n--)" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 19 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -Mix "Pattern" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 20 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -Mixn "complete pair\nof lines" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 21 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -nA3 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 22 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -nB3 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 23 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -C3 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 24 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -A9 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 25 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -nB9 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 26 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -A9 -B9 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 27 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -A10 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 28 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -nB10 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 29 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -C12 -B10 "four" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 30 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -inB3 "pattern" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 31 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -inA3 "pattern" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 32 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -L "fox" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 33 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% "fox" ./testdata/grepnonexist & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 34 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -s "fox" ./testdata/grepnonexist & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 35 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -L -r --include=grepinputx --include grepinput8 --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 36 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -L -r --include=grepinput --exclude "grepinput$" --exclude=grepinput8 --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 37 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep%  "^(a+)*\d" ./testdata/grepinput & popd) >>testtrygrep 2>teststderrgrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+echo ======== STDERR ========>>testtrygrep\r
+type teststderrgrep >>testtrygrep\r
+\r
+echo ---------------------------- Test 38 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% ">\x00<" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 39 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -A1 "before the binary zero" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 40 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -B1 "after the binary zero" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 41 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -B1 -o "\w+ the binary zero" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 42 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -B1 -onH "\w+ the binary zero" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 43 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -on "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 44 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -on -e before -ezero -e after ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 45 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -on -f ./testdata/greplist -e binary ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 46 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -eabc -e "(unclosed" ./testdata/grepinput & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 47 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -Fx AB.VE^\r
+\r
+elephant ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 48 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -F AB.VE^\r
+\r
+elephant ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 49 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -F -e DATA -e AB.VE^\r
+\r
+elephant ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 50 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% "^(abc|def|ghi|jkl)" ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 51 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -Mv "brown\sfox" ./testdata/grepinputv & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 52 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --colour=always jumps ./testdata/grepinputv & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 53 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --file-offsets "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 54 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --line-offsets "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 55 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -f./testdata/greplist --color=always ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 56 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -c lazy ./testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 57 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -c -l lazy ./testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 58 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --regex=PATTERN ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 59 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --regexp=PATTERN ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 60 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --regex PATTERN ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 61 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --regexp PATTERN ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 62 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --match-limit=1000 --no-jit -M "This is a file(.|\R)*file." ./testdata/grepinput & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 63 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --recursion-limit=1000 --no-jit -M "This is a file(.|\R)*file." ./testdata/grepinput & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 64 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o1 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 65 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o2 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 66 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o3 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 67 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o12 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 68 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --only-matching=2 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 69 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -vn --colour=always pattern ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 70 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --color=always -M "triple:\t.*\n\n" ./testdata/grepinput3 & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 71 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 72 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --color=always "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 73 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 74 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 75 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --color=always "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 76 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 77 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 78 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --color=always "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 79 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 80 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 81 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --color=always "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 82 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o --colour=always "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 83 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --buffer-size=10 --max-buffer-size=100 "^a" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 84 ----------------------------->>testtrygrep\r
+echo testdata/grepinput3 >testtemp1grep\r
+(pushd %srcdir% & %pcre2grep% --file-list ./testdata/grepfilelist --file-list %builddir%\testtemp1grep "fox|complete|t7" & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 85 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --file-list=./testdata/grepfilelist "dolor" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 86 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 87 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% "cat" ./testdata/grepbinary & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 88 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -v "cat" ./testdata/grepbinary & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 89 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -I "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 90 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --binary-files=without-match "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 91 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -a "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 92 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --binary-files=text "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 93 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --text "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 94 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -L -r --include=grepinputx --include grepinput8 "fox" ./testdata/grepinput* | sort & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 95 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --file-list ./testdata/grepfilelist --exclude grepinputv "fox|complete" & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 96 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -L -r --include-dir=testdata --exclude "^^(?^!grepinput)" "fox" ./test* | sort & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 97 ----------------------------->>testtrygrep\r
+echo grepinput$>testtemp1grep\r
+echo grepinput8>>testtemp1grep\r
+(pushd %srcdir% & %pcre2grep% -L -r --include=grepinput --exclude-from %builddir%\testtemp1grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 98 ----------------------------->>testtrygrep\r
+echo grepinput$>testtemp1grep\r
+echo grepinput8>>testtemp1grep\r
+(pushd %srcdir% & %pcre2grep% -L -r --exclude=grepinput3 --include=grepinput --exclude-from %builddir%\testtemp1grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 99 ----------------------------->>testtrygrep\r
+echo grepinput$>testtemp1grep\r
+echo grepinput8>testtemp2grep\r
+(pushd %srcdir% & %pcre2grep% -L -r --include grepinput --exclude-from %builddir%\testtemp1grep --exclude-from=%builddir%\testtemp2grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 100 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -Ho2 --only-matching=1 -o3 "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 101 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -o3 -Ho2 -o12 --only-matching=1 -o3 --colour=always --om-separator="|" "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 102 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -n "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 103 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --only-matching "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 104 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -n --only-matching "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 105 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --colour=always "ipsum|" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 106 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & echo a| %pcre2grep% -M "|a" & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 107 ----------------------------->>testtrygrep\r
+echo a>testtemp1grep\r
+echo aaaaa>>testtemp1grep\r
+(pushd %srcdir% & %pcre2grep%  --line-offsets "(?<=\Ka)" %builddir%\testtemp1grep & popd) >>testtrygrep 2>&1\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 108 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -lq PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 109 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -cq lazy ./testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 110 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --om-separator / -Mo0 -o1 -o2 "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 111 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --line-offsets -M "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 112 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --file-offsets -M "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 113 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% --total-count "the" testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 114 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -tc "the" testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 115 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -tlc "the" testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 116 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -th "the" testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 117 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -tch "the" testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 118 ----------------------------->>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -tL "the" testdata/grepinput* & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 119 ----------------------------->>testtrygrep\r
+%printf% "123\n456\n789\n---abc\ndef\nxyz\n---\n" >testNinputgrep\r
+%pcre2grep% -Mo "(\n|[^-])*---" testNinputgrep >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+echo ---------------------------- Test 120 ------------------------------>>testtrygrep\r
+(pushd %srcdir% & %pcre2grep% -HO "$0:$2$1$3" "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep\r
+echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+:: Now compare the results.\r
+\r
+%cf% %srcdir%\testdata\grepoutput testtrygrep %cfout%\r
+if ERRORLEVEL 1 exit /b 1\r
+\r
+\r
+:: These tests require UTF-8 support\r
+\r
+if %utf8% neq 0 (\r
+  echo Testing pcre2grep UTF-8 features\r
+\r
+  echo ---------------------------- Test U1 ------------------------------>testtrygrep\r
+  (pushd %srcdir% & %pcre2grep% -n -u --newline=any "^X" ./testdata/grepinput8 & popd) >>testtrygrep\r
+  echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+  echo ---------------------------- Test U2 ------------------------------>>testtrygrep\r
+  (pushd %srcdir% & %pcre2grep% -n -u -C 3 --newline=any "Match" ./testdata/grepinput8 & popd) >>testtrygrep\r
+  echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+  echo ---------------------------- Test U3 ------------------------------>>testtrygrep\r
+  (pushd %srcdir% & %pcre2grep% --line-offsets -u --newline=any "(?<=\K\x{17f})" ./testdata/grepinput8 & popd) >>testtrygrep\r
+  echo RC=^%ERRORLEVEL%>>testtrygrep\r
+\r
+  %cf% %srcdir%\testdata\grepoutput8 testtrygrep %cfout%\r
+  if ERRORLEVEL 1 exit /b 1\r
+\r
+) else (\r
+  echo Skipping pcre2grep UTF-8 tests: no UTF-8 support in PCRE2 library\r
+)\r
+\r
+\r
+:: We go to some contortions to try to ensure that the tests for the various\r
+:: newline settings will work in environments where the normal newline sequence\r
+:: is not \n. Do not use exported files, whose line endings might be changed.\r
+:: Instead, create an input file so that its contents are exactly what we want.\r
+:: These tests are run in the build directory.\r
+\r
+echo Testing pcre2grep newline settings\r
+%printf% "abc\rdef\r\nghi\njkl" >testNinputgrep\r
+\r
+echo ---------------------------- Test N1 ------------------------------>testtrygrep\r
+%pcre2grep% -n -N CR "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep\r
+\r
+echo ---------------------------- Test N2 ------------------------------>>testtrygrep\r
+%pcre2grep% -n --newline=crlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep\r
+\r
+echo ---------------------------- Test N3 ------------------------------>>testtrygrep\r
+for /f %%a in ('%printf% "def\rjkl"') do set pattern=%%a\r
+%pcre2grep% -n --newline=cr -F "!pattern!" testNinputgrep >>testtrygrep\r
+\r
+echo ---------------------------- Test N4 ------------------------------>>testtrygrep\r
+%pcre2grep% -n --newline=crlf -F -f %srcdir%/testdata/greppatN4 testNinputgrep >>testtrygrep\r
+\r
+echo ---------------------------- Test N5 ------------------------------>>testtrygrep\r
+%pcre2grep% -n --newline=any "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep\r
+\r
+echo ---------------------------- Test N6 ------------------------------>>testtrygrep\r
+%pcre2grep% -n --newline=anycrlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep\r
+\r
+%cf% %srcdir%\testdata\grepoutputN testtrygrep %cfout%\r
+if ERRORLEVEL 1 exit /b 1\r
+\r
+:: If pcre2grep supports script callouts, run some tests on them.\r
+\r
+%pcre2grep% --help | %pcre2grep% -q "Callout scripts in patterns are supported"\r
+if %ERRORLEVEL% equ 0 (\r
+  echo Testing pcre2grep script callouts\r
+  %pcre2grep% "(T)(..(.))(?C'cmd|/c echo|Arg1: [$1] [$2] [$3]|Arg2: ^$|${1}^$| ($4) ($14) ($0)')()" %srcdir%/testdata/grepinputv >testtrygrep\r
+  %pcre2grep% "(T)(..(.))()()()()()()()(..)(?C'cmd|/c echo|Arg1: [$11] [${11}]')" %srcdir%/testdata/grepinputv >>testtrygrep\r
+  %pcre2grep% "(T)(?C'|$0:$1$n')" %srcdir%/testdata/grepinputv >>testtrygrep\r
+  %pcre2grep% "(T)(?C'|$1$n')(*F)" %srcdir%/testdata/grepinputv >>testtrygrep\r
+  %cf% %srcdir%\testdata\grepoutputC testtrygrep %cfout%\r
+  if ERRORLEVEL 1 exit /b 1\r
+) else (\r
+  echo Script callouts are not supported\r
+)\r
+\r
+:: Finally, some tests to exercise code that is not tested above, just to be\r
+:: sure that it runs OK. Doing this improves the coverage statistics. The output\r
+:: is not checked.\r
+\r
+echo Testing miscellaneous pcre2grep arguments (unchecked)\r
+%printf% "" >testtrygrep\r
+call :checkspecial "-xxxxx" 2 || exit /b 1\r
+call :checkspecial "--help" 0 || exit /b 1\r
+call :checkspecial "--line-buffered --colour=auto abc nul" 1 || exit /b 1\r
+\r
+:: Clean up local working files\r
+del testcf printf.js testNinputgrep teststderrgrep testtrygrep testtemp1grep testtemp2grep\r
+\r
+exit /b 0\r
+\r
+:: ------ Function to run and check a special pcre2grep arguments test -------\r
+\r
+:checkspecial\r
+  %pcre2grep% %~1 >>testtrygrep 2>&1\r
+  if %ERRORLEVEL% neq %2 (\r
+    echo ** pcre2grep %~1 failed - check testtrygrep\r
+    exit /b 1\r
+  )\r
+  exit /b 0\r
+\r
+:: End\r