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

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
1.1.1.2 ! misho      15: @rem tests 4 5 9 15 and 18 require utf support
        !            16: @rem tests 6 7 10 16 and 19 require ucp support
        !            17: @rem 11 requires ucp and link size 2
        !            18: @rem 12 requires presense of jit support
        !            19: @rem 13 requires absence of jit support
1.1       misho      20: @rem Sheri P also added override tests for study and jit testing
1.1.1.2 ! misho      21: @rem Zoltan Herczeg added libpcre16 support
1.1       misho      22: 
                     23: setlocal enabledelayedexpansion
                     24: if [%srcdir%]==[] (
                     25: if exist testdata\ set srcdir=.)
                     26: if [%srcdir%]==[] (
                     27: if exist ..\testdata\ set srcdir=..)
                     28: if [%srcdir%]==[] (
                     29: if exist ..\..\testdata\ set srcdir=..\..)
                     30: if NOT exist "%srcdir%\testdata\" (
                     31: Error: echo distribution testdata folder not found!
                     32: call :conferror
                     33: exit /b 1
                     34: goto :eof
                     35: )
                     36: 
                     37: if "%pcretest%"=="" set pcretest=.\pcretest.exe
                     38: 
                     39: echo source dir is %srcdir%
                     40: echo pcretest=%pcretest%
                     41: 
                     42: if NOT exist "%pcretest%" (
                     43: echo Error: "%pcretest%" not found!
                     44: echo.
                     45: call :conferror
                     46: exit /b 1
                     47: )
                     48: 
1.1.1.2 ! misho      49: "%pcretest%" -C linksize >NUL
        !            50: set link_size=%ERRORLEVEL%
        !            51: "%pcretest%" -C pcre8 >NUL
        !            52: set support8=%ERRORLEVEL%
        !            53: "%pcretest%" -C pcre16 >NUL
        !            54: set support16=%ERRORLEVEL%
        !            55: "%pcretest%" -C utf >NUL
        !            56: set utf=%ERRORLEVEL%
        !            57: "%pcretest%" -C ucp >NUL
1.1       misho      58: set ucp=%ERRORLEVEL%
1.1.1.2 ! misho      59: "%pcretest%" -C jit >NUL
1.1       misho      60: set jit=%ERRORLEVEL%
1.1.1.2 ! misho      61: 
        !            62: if %support8% EQU 1 (
        !            63: if not exist testout8 md testout8
        !            64: if not exist testoutstudy8 md testoutstudy8
        !            65: if not exist testoutjit8 md testoutjit8
1.1       misho      66: )
                     67: 
1.1.1.2 ! misho      68: if %support16% EQU 1 (
        !            69: if not exist testout16 md testout16
        !            70: if not exist testoutstudy16 md testoutstudy16
        !            71: if not exist testoutjit16 md testoutjit16
        !            72: )
1.1       misho      73: 
                     74: set do1=no
                     75: set do2=no
                     76: set do3=no
                     77: set do4=no
                     78: set do5=no
                     79: set do6=no
                     80: set do7=no
                     81: set do8=no
                     82: set do9=no
                     83: set do10=no
                     84: set do11=no
                     85: set do12=no
                     86: set do13=no
                     87: set do14=no
                     88: set do15=no
1.1.1.2 ! misho      89: set do16=no
        !            90: set do17=no
        !            91: set do18=no
        !            92: set do19=no
        !            93: set do20=no
1.1       misho      94: set all=yes
                     95: 
                     96: for %%a in (%*) do (
                     97:   set valid=no
1.1.1.2 ! misho      98:   for %%v in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do if %%v == %%a set valid=yes
1.1       misho      99:   if "!valid!" == "yes" (
                    100:     set do%%a=yes
                    101:     set all=no
                    102: ) else (
                    103:     echo Invalid test number - %%a!
                    104:         echo Usage %0 [ test_number ] ...
1.1.1.2 ! misho     105:         echo Where test_number is one or more optional test numbers 1 through 20, default is all tests.
1.1       misho     106:         exit /b 1
                    107: )
                    108: )
                    109: set failed="no"
                    110: 
                    111: if "%all%" == "yes" (
                    112:   set do1=yes
                    113:   set do2=yes
                    114:   set do3=yes
                    115:   set do4=yes
                    116:   set do5=yes
                    117:   set do6=yes
                    118:   set do7=yes
                    119:   set do8=yes
                    120:   set do9=yes
                    121:   set do10=yes
                    122:   set do11=yes
                    123:   set do12=yes
                    124:   set do13=yes
                    125:   set do14=yes
                    126:   set do15=yes
1.1.1.2 ! misho     127:   set do16=yes
        !           128:   set do17=yes
        !           129:   set do18=yes
        !           130:   set do19=yes
        !           131:   set do20=yes
1.1       misho     132: )
                    133: 
                    134: @echo RunTest.bat's pcretest output is written to newly created subfolders named
                    135: @echo testout, testoutstudy and testoutjit.
                    136: @echo.
1.1.1.2 ! misho     137: 
        !           138: set mode=
        !           139: set bits=8
        !           140: 
        !           141: :nextMode
        !           142: if "%mode%" == "" (
        !           143:   if %support8% EQU 0 goto modeSkip
        !           144:   echo.
        !           145:   echo ---- Testing 8-bit library ----
        !           146:   echo.
        !           147: ) else (
        !           148:   if %support16% EQU 0 goto modeSkip
        !           149:   echo.
        !           150:   echo ---- Testing 16-bit library ----
        !           151:   echo.
        !           152: )
1.1       misho     153: if "%do1%" == "yes" call :do1
                    154: if "%do2%" == "yes" call :do2
                    155: if "%do3%" == "yes" call :do3
                    156: if "%do4%" == "yes" call :do4
                    157: if "%do5%" == "yes" call :do5
                    158: if "%do6%" == "yes" call :do6
                    159: if "%do7%" == "yes" call :do7
                    160: if "%do8%" == "yes" call :do8
                    161: if "%do9%" == "yes" call :do9
                    162: if "%do10%" == "yes" call :do10
                    163: if "%do11%" == "yes" call :do11
                    164: if "%do12%" == "yes" call :do12
                    165: if "%do13%" == "yes" call :do13
                    166: if "%do14%" == "yes" call :do14
                    167: if "%do15%" == "yes" call :do15
1.1.1.2 ! misho     168: if "%do16%" == "yes" call :do16
        !           169: if "%do17%" == "yes" call :do17
        !           170: if "%do18%" == "yes" call :do18
        !           171: if "%do19%" == "yes" call :do19
        !           172: if "%do20%" == "yes" call :do20
        !           173: :modeSkip
        !           174: if "%mode%" == "" (
        !           175:   set mode=-16
        !           176:   set bits=16
        !           177:   goto nextMode
        !           178: )
        !           179: 
1.1       misho     180: if %failed% == "yes" (
                    181: echo In above output, one or more of the various tests failed!
                    182: exit /b 1
                    183: )
                    184: echo All OK
                    185: goto :eof
                    186: 
                    187: :runsub
                    188: @rem Function to execute pcretest and compare the output
                    189: @rem Arguments are as follows:
                    190: @rem
                    191: @rem       1 = test number
                    192: @rem       2 = outputdir
                    193: @rem       3 = test name use double quotes
                    194: @rem   4 - 9 = pcretest options
                    195: 
                    196: if [%1] == [] (
                    197:   echo Missing test number argument!
                    198:   exit /b 1
                    199: )
                    200: 
                    201: if [%2] == [] (
                    202:   echo Missing outputdir!
                    203:   exit /b 1
                    204: )
                    205: 
                    206: if [%3] == [] (
                    207:   echo Missing test name argument!
                    208:   exit /b 1
                    209: )
                    210: 
                    211: set testinput=testinput%1
                    212: set testoutput=testoutput%1
                    213: if exist %srcdir%\testdata\win%testinput% (
                    214:   set testinput=wintestinput%1
                    215:   set testoutput=wintestoutput%1
                    216: )
                    217: 
                    218: echo Test %1: %3
1.1.1.2 ! misho     219: "%pcretest%" %mode% %4 %5 %6 %7 %8 %9 "%srcdir%\testdata\%testinput%">%2%bits%\%testoutput%
1.1       misho     220: if errorlevel 1 (
                    221:   echo.          failed executing command-line:
1.1.1.2 ! misho     222:   echo.            "%pcretest%" %mode% %4 %5 %6 %7 %8 %9 "%srcdir%\testdata\%testinput%"^>%2%bits%\%testoutput%
1.1       misho     223:   set failed="yes"
                    224:   goto :eof
                    225: )
                    226: 
1.1.1.2 ! misho     227: if [%1]==[11] (
        !           228:   fc /n "%srcdir%\testdata\%testoutput%-%bits%" "%2%bits%\%testoutput%">NUL
        !           229: ) else (
        !           230:   fc /n "%srcdir%\testdata\%testoutput%" "%2%bits%\%testoutput%">NUL
        !           231: )
1.1       misho     232: if errorlevel 1 (
1.1.1.2 ! misho     233:   echo.          failed comparison: fc /n "%srcdir%\testdata\%testoutput%" "%2%bits%\%testoutput%"
1.1       misho     234:   if [%1]==[2] (
                    235:     echo.
                    236:     echo ** Test 2 requires a lot of stack. PCRE can be configured to
                    237:     echo ** use heap for recursion. Otherwise, to pass Test 2
                    238:     echo ** you generally need to allocate 8 mb stack to PCRE.
                    239:     echo ** See the 'pcrestack' page for a discussion of PCRE's
                    240:     echo ** stack usage.
                    241:     echo.
                    242: )
                    243:   if [%1]==[3] (
                    244:     echo.
                    245:     echo ** Test 3 failure usually means french locale is not
                    246:     echo ** available on the system, rather than a bug or problem with PCRE.
                    247:     echo.
1.1.1.2 ! misho     248:     goto :eof
1.1       misho     249: )
                    250: 
1.1.1.2 ! misho     251:   set failed="yes"
1.1       misho     252:   goto :eof
                    253: )
                    254: 
                    255: echo.          Passed.
                    256: goto :eof
                    257: 
                    258: :do1
                    259: call :runsub 1 testout "Main functionality - Compatible with Perl 5.8 and above" -q
                    260: call :runsub 1 testoutstudy "Test with Study Override" -q -s
                    261: if %jit% EQU 1 call :runsub 1 testoutjit "Test with JIT Override" -q -s+
                    262: goto :eof
                    263: 
                    264: :do2
                    265:   call :runsub 2 testout "API, errors, internals, and non-Perl stuff (not UTF-8)" -q
                    266:   call :runsub 2 testoutstudy "Test with Study Override" -q -s
                    267:   if %jit% EQU 1 call :runsub 2 testoutjit "Test with JIT Override" -q -s+
                    268: goto :eof
                    269: 
                    270: :do3
                    271:   call :runsub 3 testout "Locale-specific features" -q
                    272:   call :runsub 3 testoutstudy "Test with Study Override" -q -s
                    273:   if %jit% EQU 1 call :runsub 3 testoutjit "Test with JIT Override" -q -s+
                    274: goto :eof
                    275: 
                    276: :do4
1.1.1.2 ! misho     277:   if %utf% EQU 0 (
        !           278:   echo Test 4 Skipped due to absence of UTF-%bits% support.
1.1       misho     279:   goto :eof
                    280: )
1.1.1.2 ! misho     281:   call :runsub 4 testout "UTF-%bits% support - Compatible with Perl 5.8 and above" -q
1.1       misho     282:   call :runsub 4 testoutstudy "Test with Study Override" -q -s
                    283:   if %jit% EQU 1 call :runsub 4 testoutjit "Test with JIT Override" -q -s+
                    284: goto :eof
                    285: 
                    286: :do5
1.1.1.2 ! misho     287:   if %utf% EQU 0 (
        !           288:   echo Test 5 Skipped due to absence of UTF-%bits% support.
1.1       misho     289:   goto :eof
                    290: )
1.1.1.2 ! misho     291:   call :runsub 5 testout "API, internals, and non-Perl stuff for UTF-%bits% support" -q
1.1       misho     292:   call :runsub 5 testoutstudy "Test with Study Override" -q -s
                    293:   if %jit% EQU 1 call :runsub 5 testoutjit "Test with JIT Override" -q -s+
                    294: goto :eof
                    295: 
                    296: :do6
                    297: if %ucp% EQU 0 (
1.1.1.2 ! misho     298:   echo Test 6 Skipped due to absence of Unicode property support.
1.1       misho     299:   goto :eof
                    300: )
1.1.1.2 ! misho     301:   call :runsub 6 testout "Unicode property support (Compatible with Perl >= 5.10)" -q
1.1       misho     302:   call :runsub 6 testoutstudy "Test with Study Override" -q -s
                    303:   if %jit% EQU 1 call :runsub 6 testoutjit "Test with JIT Override" -q -s+
                    304: goto :eof
                    305: 
                    306: :do7
1.1.1.2 ! misho     307: if %ucp% EQU 0 (
        !           308:   echo Test 7 Skipped due to absence of Unicode property support.
        !           309:   goto :eof
        !           310: )
        !           311:   call :runsub 7 testout "API, internals, and non-Perl stuff for Unicode property support" -q
        !           312:   call :runsub 7 testoutstudy "Test with Study Override" -q -s
        !           313:   if %jit% EQU 1 call :runsub 7 testoutjit "Test with JIT Override" -q -s+
1.1       misho     314: goto :eof
                    315: 
                    316: :do8
1.1.1.2 ! misho     317:   call :runsub 8 testout "DFA matching main functionality" -q -dfa
1.1       misho     318:   call :runsub 8 testoutstudy "Test with Study Override" -q -dfa -s
1.1.1.2 ! misho     319: goto :eof
1.1       misho     320: 
                    321: :do9
1.1.1.2 ! misho     322:   if %utf% EQU 0 (
        !           323:   echo Test 9 Skipped due to absence of UTF-%bits% support.
1.1       misho     324:   goto :eof
                    325: )
1.1.1.2 ! misho     326:   call :runsub 9 testout "DFA matching with UTF-%bits%" -q -dfa
1.1       misho     327:   call :runsub 9 testoutstudy "Test with Study Override" -q -dfa -s
1.1.1.2 ! misho     328:   goto :eof
1.1       misho     329: 
                    330: :do10
1.1.1.2 ! misho     331:   if %ucp% EQU 0 (
        !           332:   echo Test 10 Skipped due to absence of Unicode property support.
1.1       misho     333:   goto :eof
                    334: )
1.1.1.2 ! misho     335:   call :runsub 10 testout "DFA matching with Unicode properties" -q -dfa
        !           336:   call :runsub 10 testoutstudy "Test with Study Override" -q -dfa -s
1.1       misho     337: goto :eof
                    338: 
                    339: :do11
1.1.1.2 ! misho     340:   if NOT %link_size% EQU 2 (
        !           341:   echo Test 11 Skipped because link size is not 2.
        !           342:   goto :eof
        !           343: )
        !           344:   if %ucp% EQU 0 (
        !           345:   echo Test 11 Skipped due to absence of Unicode property support.
        !           346:   goto :eof
        !           347: )
        !           348:   call :runsub 11 testout "Internal offsets and code size tests" -q
1.1       misho     349:   call :runsub 11 testoutstudy "Test with Study Override" -q -s
                    350: goto :eof
                    351: 
                    352: :do12
1.1.1.2 ! misho     353: if %jit% EQU 0 (
        !           354:   echo Test 12 Skipped due to absence of JIT support.
1.1       misho     355:   goto :eof
                    356: )
1.1.1.2 ! misho     357:   call :runsub 12 testout "JIT-specific features - have JIT" -q
1.1       misho     358: goto :eof
                    359: 
                    360: :do13
1.1.1.2 ! misho     361:   if %jit% EQU 1 (
        !           362:   echo Test 13 Skipped due to presence of JIT support.
1.1       misho     363:   goto :eof
                    364: )
1.1.1.2 ! misho     365:   call :runsub 13 testout "JIT-specific features - no JIT" -q
1.1       misho     366: goto :eof
                    367: 
                    368: :do14
1.1.1.2 ! misho     369:   if NOT %bits% EQU 8 (
        !           370:   echo Test 14 Skipped when running 16-bit tests.
1.1       misho     371:   goto :eof
                    372: )
1.1.1.2 ! misho     373:   copy /Y "%srcdir%\testdata\saved16" testsaved16
        !           374:   call :runsub 14 testout "Specials for the basic 8-bit library" -q
        !           375:   call :runsub 14 testoutstudy "Test with Study Override" -q -s
        !           376:   if %jit% EQU 1 call :runsub 14 testoutjit "Test with JIT Override" -q -s+
1.1       misho     377: goto :eof
                    378: 
                    379: :do15
1.1.1.2 ! misho     380:   if NOT %bits% EQU 8 (
        !           381:   echo Test 15 Skipped when running 16-bit tests.
        !           382:   goto :eof
        !           383: )
        !           384:   if %utf% EQU 0 (
        !           385:   echo Test 15 Skipped due to absence of UTF-8 support.
        !           386:   goto :eof
        !           387: )
        !           388:   call :runsub 15 testout "Specials for the 8-bit library with UTF-8 support" -q
        !           389:   call :runsub 15 testoutstudy "Test with Study Override" -q -s
        !           390:   if %jit% EQU 1 call :runsub 15 testoutjit "Test with JIT Override" -q -s+
        !           391: goto :eof
        !           392: 
        !           393: :do16
        !           394:   if NOT %bits% EQU 8 (
        !           395:   echo Test 16 Skipped when running 16-bit tests.
        !           396:   goto :eof
        !           397: )
        !           398:   if %ucp% EQU 0 (
        !           399:   echo Test 16 Skipped due to absence of Unicode property support.
        !           400:   goto :eof
        !           401: )
        !           402:   call :runsub 16 testout "Specials for the 8-bit library with Unicode propery support" -q
        !           403:   call :runsub 16 testoutstudy "Test with Study Override" -q -s
        !           404:   if %jit% EQU 1 call :runsub 16 testoutjit "Test with JIT Override" -q -s+
        !           405: goto :eof
        !           406: 
        !           407: :do17
        !           408:   if NOT %bits% EQU 16 (
        !           409:   echo Test 17 Skipped when running 8-bit tests.
        !           410:   goto :eof
        !           411: )
        !           412:   copy /Y "%srcdir%\testdata\saved8" testsaved8
        !           413:   copy /Y "%srcdir%\testdata\saved16LE-1" testsaved16LE-1
        !           414:   copy /Y "%srcdir%\testdata\saved16BE-1" testsaved16BE-1
        !           415:   call :runsub 17 testout "Specials for the basic 8-bit library" -q
        !           416:   call :runsub 17 testoutstudy "Test with Study Override" -q -s
        !           417:   if %jit% EQU 1 call :runsub 17 testoutjit "Test with JIT Override" -q -s+
        !           418: goto :eof
        !           419: 
        !           420: :do18
        !           421:   if NOT %bits% EQU 16 (
        !           422:   echo Test 18 Skipped when running 8-bit tests.
        !           423:   goto :eof
        !           424: )
        !           425:   if %utf% EQU 0 (
        !           426:   echo Test 18 Skipped due to absence of UTF-8 support.
        !           427:   goto :eof
        !           428: )
        !           429:   copy /Y "%srcdir%\testdata\saved16LE-2" testsaved16LE-2
        !           430:   copy /Y "%srcdir%\testdata\saved16BE-2" testsaved16BE-2
        !           431:   call :runsub 18 testout "Specials for the basic 8-bit library" -q
        !           432:   call :runsub 18 testoutstudy "Test with Study Override" -q -s
        !           433:   if %jit% EQU 1 call :runsub 18 testoutjit "Test with JIT Override" -q -s+
        !           434: goto :eof
        !           435: 
        !           436: :do19
        !           437:   if NOT %bits% EQU 16 (
        !           438:   echo Test 19 Skipped when running 8-bit tests.
        !           439:   goto :eof
        !           440: )
        !           441:   if %ucp% EQU 0 (
        !           442:   echo Test 19 Skipped due to absence of Unicode property support.
        !           443:   goto :eof
        !           444: )
        !           445:   call :runsub 19 testout "Specials for the basic 8-bit library" -q
        !           446:   call :runsub 19 testoutstudy "Test with Study Override" -q -s
        !           447:   if %jit% EQU 1 call :runsub 19 testoutjit "Test with JIT Override" -q -s+
        !           448: goto :eof
        !           449: 
        !           450: :do20
        !           451:   if NOT %bits% EQU 16 (
        !           452:   echo Test 20 Skipped when running 8-bit tests.
1.1       misho     453:   goto :eof
                    454: )
1.1.1.2 ! misho     455:   call :runsub 20 testout "DFA specials for the basic 16-bit library" -q
        !           456:   call :runsub 20 testoutstudy "Test with Study Override" -q -s
1.1       misho     457: goto :eof
                    458: 
                    459: :conferror
                    460: @echo.
                    461: @echo Either your build is incomplete or you have a configuration error.
                    462: @echo.
                    463: @echo If configured with cmake and executed via "make test" or the MSVC "RUN_TESTS"
                    464: @echo project, pcre_test.bat defines variables and automatically calls RunTest.bat.
                    465: @echo For manual testing of all available features, after configuring with cmake
                    466: @echo and building, you can run the built pcre_test.bat. For best results with
                    467: @echo cmake builds and tests avoid directories with full path names that include
                    468: @echo spaces for source or build.
                    469: @echo.
                    470: @echo Otherwise, if the build dir is in a subdir of the source dir, testdata needed
                    471: @echo for input and verification should be found automatically when (from the
                    472: @echo location of the the built exes) you call RunTest.bat. By default RunTest.bat
                    473: @echo runs all tests compatible with the linked pcre library but it can be given
                    474: @echo a test number as an argument.
                    475: @echo.
                    476: @echo If the build dir is not under the source dir you can either copy your exes
                    477: @echo to the source folder or copy RunTest.bat and the testdata folder to the
                    478: @echo location of your built exes and then run RunTest.bat.
                    479: @echo.
                    480: goto :eof

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