Annotation of embedaddon/pcre/RunTest.bat, revision 1.1.1.1

1.1       misho       1: @echo off
                      2: @rem This file must use CRLF linebreaks to function properly
                      3: @rem and requires both pcretest and pcregrep
                      4: @rem  This file was originally contributed by Ralf Junker, and touched up by
                      5: @rem  Daniel Richard G. Tests 10-12 added by Philip H.
                      6: @rem  Philip H also changed test 3 to use "wintest" files.
                      7: @rem
                      8: @rem  Updated by Tom Fortmann to support explicit test numbers on the command line.
                      9: @rem  Added argument validation and added error reporting.
                     10: @rem
                     11: @rem  MS Windows batch file to run pcretest on testfiles with the correct
                     12: @rem  options.
                     13: @rem
                     14: @rem Sheri Pierce added logic to skip feature dependent tests
                     15: @rem tests 4 5 8 and 12 require utf8 support
                     16: @rem tests 6 9 13 require ucp support
                     17: @rem 10 requires ucp and link size 2
                     18: @rem 14 requires presense of jit support
                     19: @rem 15 requires absence of jit support
                     20: @rem Sheri P also added override tests for study and jit testing
                     21: @rem JIT testing n/a for tests 7-10, removed JIT override test for them
                     22: @rem removed override tests for 14-15
                     23: 
                     24: setlocal enabledelayedexpansion
                     25: if [%srcdir%]==[] (
                     26: if exist testdata\ set srcdir=.)
                     27: if [%srcdir%]==[] (
                     28: if exist ..\testdata\ set srcdir=..)
                     29: if [%srcdir%]==[] (
                     30: if exist ..\..\testdata\ set srcdir=..\..)
                     31: if NOT exist "%srcdir%\testdata\" (
                     32: Error: echo distribution testdata folder not found!
                     33: call :conferror
                     34: exit /b 1
                     35: goto :eof
                     36: )
                     37: 
                     38: if "%pcregrep%"=="" set pcregrep=.\pcregrep.exe
                     39: if "%pcretest%"=="" set pcretest=.\pcretest.exe
                     40: 
                     41: echo source dir is %srcdir%
                     42: echo pcretest=%pcretest%
                     43: echo pcregrep=%pcregrep%
                     44: 
                     45: if NOT exist "%pcregrep%" (
                     46: echo Error: "%pcregrep%" not found!
                     47: echo.
                     48: call :conferror
                     49: exit /b 1
                     50: )
                     51: 
                     52: if NOT exist "%pcretest%" (
                     53: echo Error: "%pcretest%" not found!
                     54: echo.
                     55: call :conferror
                     56: exit /b 1
                     57: )
                     58: 
                     59: "%pcretest%" -C|"%pcregrep%" --no-jit "No UTF-8 support">NUL
                     60: set utf8=%ERRORLEVEL%
                     61: "%pcretest%" -C|"%pcregrep%" --no-jit "No Unicode properties support">NUL
                     62: set ucp=%ERRORLEVEL%
                     63: "%pcretest%" -C|"%pcregrep%" --no-jit "No just-in-time compiler support">NUL
                     64: set jit=%ERRORLEVEL%
                     65: "%pcretest%" -C|"%pcregrep%" --no-jit "Internal link size = 2">NUL
                     66: set link2=%ERRORLEVEL%
                     67: set ucpandlink2=0
                     68: if %ucp% EQU 1 (
                     69:  if %link2% EQU 0 set ucpandlink2=1
                     70: )
                     71: 
                     72: if not exist testout md testout
                     73: if not exist testoutstudy md testoutstudy
                     74: if not exist testoutjit md testoutjit
                     75: 
                     76: set do1=no
                     77: set do2=no
                     78: set do3=no
                     79: set do4=no
                     80: set do5=no
                     81: set do6=no
                     82: set do7=no
                     83: set do8=no
                     84: set do9=no
                     85: set do10=no
                     86: set do11=no
                     87: set do12=no
                     88: set do13=no
                     89: set do14=no
                     90: set do15=no
                     91: set all=yes
                     92: 
                     93: for %%a in (%*) do (
                     94:   set valid=no
                     95:   for %%v in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) do if %%v == %%a set valid=yes
                     96:   if "!valid!" == "yes" (
                     97:     set do%%a=yes
                     98:     set all=no
                     99: ) else (
                    100:     echo Invalid test number - %%a!
                    101:         echo Usage %0 [ test_number ] ...
                    102:         echo Where test_number is one or more optional test numbers 1 through 15, default is all tests.
                    103:         exit /b 1
                    104: )
                    105: )
                    106: set failed="no"
                    107: 
                    108: if "%all%" == "yes" (
                    109:   set do1=yes
                    110:   set do2=yes
                    111:   set do3=yes
                    112:   set do4=yes
                    113:   set do5=yes
                    114:   set do6=yes
                    115:   set do7=yes
                    116:   set do8=yes
                    117:   set do9=yes
                    118:   set do10=yes
                    119:   set do11=yes
                    120:   set do12=yes
                    121:   set do13=yes
                    122:   set do14=yes
                    123:   set do15=yes
                    124: )
                    125: 
                    126: @echo RunTest.bat's pcretest output is written to newly created subfolders named
                    127: @echo testout, testoutstudy and testoutjit.
                    128: @echo.
                    129: if "%do1%" == "yes" call :do1
                    130: if "%do2%" == "yes" call :do2
                    131: if "%do3%" == "yes" call :do3
                    132: if "%do4%" == "yes" call :do4
                    133: if "%do5%" == "yes" call :do5
                    134: if "%do6%" == "yes" call :do6
                    135: if "%do7%" == "yes" call :do7
                    136: if "%do8%" == "yes" call :do8
                    137: if "%do9%" == "yes" call :do9
                    138: if "%do10%" == "yes" call :do10
                    139: if "%do11%" == "yes" call :do11
                    140: if "%do12%" == "yes" call :do12
                    141: if "%do13%" == "yes" call :do13
                    142: if "%do14%" == "yes" call :do14
                    143: if "%do15%" == "yes" call :do15
                    144: if %failed% == "yes" (
                    145: echo In above output, one or more of the various tests failed!
                    146: exit /b 1
                    147: )
                    148: echo All OK
                    149: goto :eof
                    150: 
                    151: :runsub
                    152: @rem Function to execute pcretest and compare the output
                    153: @rem Arguments are as follows:
                    154: @rem
                    155: @rem       1 = test number
                    156: @rem       2 = outputdir
                    157: @rem       3 = test name use double quotes
                    158: @rem   4 - 9 = pcretest options
                    159: 
                    160: if [%1] == [] (
                    161:   echo Missing test number argument!
                    162:   exit /b 1
                    163: )
                    164: 
                    165: if [%2] == [] (
                    166:   echo Missing outputdir!
                    167:   exit /b 1
                    168: )
                    169: 
                    170: if [%3] == [] (
                    171:   echo Missing test name argument!
                    172:   exit /b 1
                    173: )
                    174: 
                    175: set testinput=testinput%1
                    176: set testoutput=testoutput%1
                    177: if exist %srcdir%\testdata\win%testinput% (
                    178:   set testinput=wintestinput%1
                    179:   set testoutput=wintestoutput%1
                    180: )
                    181: 
                    182: echo Test %1: %3
                    183: "%pcretest%" %4 %5 %6 %7 %8 %9 "%srcdir%\testdata\%testinput%">%2\%testoutput%
                    184: if errorlevel 1 (
                    185:   echo.          failed executing command-line:
                    186:   echo.            "%pcretest%" %4 %5 %6 %7 %8 %9 "%srcdir%\testdata\%testinput%"^>%2\%testoutput%
                    187:   set failed="yes"
                    188:   goto :eof
                    189: )
                    190: 
                    191: fc /n "%srcdir%\testdata\%testoutput%" "%2\%testoutput%">NUL
                    192: if errorlevel 1 (
                    193:   echo.          failed comparison: fc /n "%srcdir%\testdata\%testoutput%" "%2\%testoutput%"
                    194:   set failed="yes"
                    195:   if [%1]==[2] (
                    196:     echo.
                    197:     echo ** Test 2 requires a lot of stack. PCRE can be configured to
                    198:     echo ** use heap for recursion. Otherwise, to pass Test 2
                    199:     echo ** you generally need to allocate 8 mb stack to PCRE.
                    200:     echo ** See the 'pcrestack' page for a discussion of PCRE's
                    201:     echo ** stack usage.
                    202:     echo.
                    203: )
                    204:   if [%1]==[3] (
                    205:     echo.
                    206:     echo ** Test 3 failure usually means french locale is not
                    207:     echo ** available on the system, rather than a bug or problem with PCRE.
                    208:     echo.
                    209: )
                    210: 
                    211:   goto :eof
                    212: )
                    213: 
                    214: echo.          Passed.
                    215: goto :eof
                    216: 
                    217: :do1
                    218: call :runsub 1 testout "Main functionality - Compatible with Perl 5.8 and above" -q
                    219: call :runsub 1 testoutstudy "Test with Study Override" -q -s
                    220: if %jit% EQU 1 call :runsub 1 testoutjit "Test with JIT Override" -q -s+
                    221: goto :eof
                    222: 
                    223: :do2
                    224:   call :runsub 2 testout "API, errors, internals, and non-Perl stuff (not UTF-8)" -q
                    225:   call :runsub 2 testoutstudy "Test with Study Override" -q -s
                    226:   if %jit% EQU 1 call :runsub 2 testoutjit "Test with JIT Override" -q -s+
                    227: goto :eof
                    228: 
                    229: :do3
                    230:   call :runsub 3 testout "Locale-specific features" -q
                    231:   call :runsub 3 testoutstudy "Test with Study Override" -q -s
                    232:   if %jit% EQU 1 call :runsub 3 testoutjit "Test with JIT Override" -q -s+
                    233: goto :eof
                    234: 
                    235: :do4
                    236:   if %utf8% EQU 0 (
                    237:   echo Test 4 Skipped due to absence of UTF-8 support.
                    238:   goto :eof
                    239: )
                    240:   call :runsub 4 testout "UTF-8 support - Compatible with Perl 5.8 and above" -q
                    241:   call :runsub 4 testoutstudy "Test with Study Override" -q -s
                    242:   if %jit% EQU 1 call :runsub 4 testoutjit "Test with JIT Override" -q -s+
                    243: goto :eof
                    244: 
                    245: :do5
                    246:   if %utf8% EQU 0 (
                    247:   echo Test 5 Skipped due to absence of UTF-8 support.
                    248:   goto :eof
                    249: )
                    250:   call :runsub 5 testout "API, internals, and non-Perl stuff for UTF-8 support" -q
                    251:   call :runsub 5 testoutstudy "Test with Study Override" -q -s
                    252:   if %jit% EQU 1 call :runsub 5 testoutjit "Test with JIT Override" -q -s+
                    253: goto :eof
                    254: 
                    255: :do6
                    256: if %ucp% EQU 0 (
                    257:   echo Test 6 Skipped due to absence of ucp support.
                    258:   goto :eof
                    259: )
                    260:   call :runsub 6 testout "Unicode property support - Compatible with Perl 5.10 and above" -q
                    261:   call :runsub 6 testoutstudy "Test with Study Override" -q -s
                    262:   if %jit% EQU 1 call :runsub 6 testoutjit "Test with JIT Override" -q -s+
                    263: goto :eof
                    264: 
                    265: :do7
                    266:   call :runsub 7 testout "DFA matching" -q -dfa
                    267:   call :runsub 7 testoutstudy "Test with Study Override" -q -dfa -s
                    268: goto :eof
                    269: 
                    270: :do8
                    271:   if %utf8% EQU 0 (
                    272:   echo Test 8 Skipped due to absence of UTF-8 support.
                    273:   goto :eof
                    274: )
                    275:   call :runsub 8 testout "DFA matching with UTF-8" -q -dfa
                    276:   call :runsub 8 testoutstudy "Test with Study Override" -q -dfa -s
                    277:   goto :eof
                    278: 
                    279: :do9
                    280:   if %ucp% EQU 0 (
                    281:   echo Test 9 Skipped due to absence of ucp support.
                    282:   goto :eof
                    283: )
                    284:   call :runsub 9 testout "DFA matching with Unicode properties" -q -dfa
                    285:   call :runsub 9 testoutstudy "Test with Study Override" -q -dfa -s
                    286: goto :eof
                    287: 
                    288: :do10
                    289:   if %ucpandlink2% EQU 0 (
                    290:   echo Test 10 Skipped due to requirements of ucp support AND link size 2.
                    291:   goto :eof
                    292: )
                    293:   call :runsub 10 testout "Internal offsets and code size tests" -q
                    294:   call :runsub 10 testoutstudy "Test with Study Override" -q -s
                    295: goto :eof
                    296: 
                    297: :do11
                    298:   call :runsub 11 testout "Features from Perl 5.10 and above" -q
                    299:   call :runsub 11 testoutstudy "Test with Study Override" -q -s
                    300:   if %jit% EQU 1 call :runsub 11 testoutjit "Test with JIT Override" -q -s+
                    301: goto :eof
                    302: 
                    303: :do12
                    304:   if %utf8% EQU 0 (
                    305:   echo Test 12 Skipped due to absence of UTF-8 support.
                    306:   goto :eof
                    307: )
                    308:   call :runsub 12 testout "Features from Perl 5.10 and above w UTF-8" -q
                    309:   call :runsub 12 testoutstudy "Test with Study Override" -q -s
                    310:   if %jit% EQU 1 call :runsub 12 testoutjit "Test with JIT Override" -q -s+
                    311: goto :eof
                    312: 
                    313: :do13
                    314:   if %ucp% EQU 0 (
                    315:   echo Test 13 Skipped due to absence of ucp support.
                    316:   goto :eof
                    317: )
                    318: call :runsub 13 testout "API internals and non-Perl stuff for Unicode property support" -q
                    319: call :runsub 13 testoutstudy "Test with Study Override" -q -s
                    320: if %jit% EQU 1 call :runsub 13 testoutjit "Test with JIT Override" -q -s+
                    321: goto :eof
                    322: 
                    323: :do14
                    324: if %jit% EQU 0 (
                    325:   echo Test 14 Skipped due to absence of JIT support.
                    326:   goto :eof
                    327: )
                    328:   call :runsub 14 testout "JIT-specific features - have JIT" -q
                    329: goto :eof
                    330: 
                    331: :do15
                    332:   if %jit% EQU 1 (
                    333:   echo Test 15 Skipped due to presence of JIT support.
                    334:   goto :eof
                    335: )
                    336:   call :runsub 15 testout "JIT-specific features - no JIT" -q
                    337: goto :eof
                    338: 
                    339: :conferror
                    340: @echo.
                    341: @echo Either your build is incomplete or you have a configuration error.
                    342: @echo.
                    343: @echo If configured with cmake and executed via "make test" or the MSVC "RUN_TESTS"
                    344: @echo project, pcre_test.bat defines variables and automatically calls RunTest.bat.
                    345: @echo For manual testing of all available features, after configuring with cmake
                    346: @echo and building, you can run the built pcre_test.bat. For best results with
                    347: @echo cmake builds and tests avoid directories with full path names that include
                    348: @echo spaces for source or build.
                    349: @echo.
                    350: @echo Otherwise, if the build dir is in a subdir of the source dir, testdata needed
                    351: @echo for input and verification should be found automatically when (from the
                    352: @echo location of the the built exes) you call RunTest.bat. By default RunTest.bat
                    353: @echo runs all tests compatible with the linked pcre library but it can be given
                    354: @echo a test number as an argument.
                    355: @echo.
                    356: @echo If the build dir is not under the source dir you can either copy your exes
                    357: @echo to the source folder or copy RunTest.bat and the testdata folder to the
                    358: @echo location of your built exes and then run RunTest.bat.
                    359: @echo.
                    360: goto :eof

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>