File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / pcre / RunTest.bat
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:05:51 2012 UTC (12 years, 8 months ago) by misho
CVS tags: MAIN, HEAD
Initial revision

    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>