[Pcre-svn] [1283] code/trunk: Update RunTest to add more tes…

Top Page
Delete this message
Author: Subversion repository
Date:  
To: pcre-svn
Subject: [Pcre-svn] [1283] code/trunk: Update RunTest to add more test selector options.
Revision: 1283
          http://vcs.pcre.org/viewvc?view=rev&revision=1283
Author:   ph10
Date:     2013-03-15 10:21:53 +0000 (Fri, 15 Mar 2013)


Log Message:
-----------
Update RunTest to add more test selector options.

Modified Paths:
--------------
    code/trunk/ChangeLog
    code/trunk/RunTest


Modified: code/trunk/ChangeLog
===================================================================
--- code/trunk/ChangeLog    2013-03-15 08:01:41 UTC (rev 1282)
+++ code/trunk/ChangeLog    2013-03-15 10:21:53 UTC (rev 1283)
@@ -108,7 +108,9 @@


29. Experimental support of (*THEN) backtracking verb in the JIT compiler.

+30. Update RunTest with additional test selector options.

+
Version 8.32 30-November-2012
-----------------------------


Modified: code/trunk/RunTest
===================================================================
--- code/trunk/RunTest    2013-03-15 08:01:41 UTC (rev 1282)
+++ code/trunk/RunTest    2013-03-15 10:21:53 UTC (rev 1283)
@@ -1,5 +1,6 @@
 #! /bin/sh


+###############################################################################
# Run the PCRE tests using the pcretest program. The appropriate tests are
# selected, depending on which build-time options were used.
#
@@ -20,15 +21,22 @@
# specified), and one when it is not.
#
# Whichever of the 8-, 16- and 32-bit libraries exist are tested. It is also
-# possible to select which to test by the arguments -8, -16 or -32.
+# possible to select which to test by giving "-8", "-16" or "-32" on the
+# command line.
#
-# Other arguments for this script can be individual test numbers, or the word
-# "valgrind", "valgrind-log" or "sim" followed by an argument to run cross-
-# compiled executables under a simulator, for example:
+# As well as "nojit", "-8", "-16", and "-32", arguments for this script are
+# individual test numbers, ranges of tests such as 3-6 or 3- (meaning 3 to the
+# end), or a number preceded by ~ to exclude a test. For example, "3-15 ~10"
+# runs tests 3 to 15, excluding test 10, and just "~10" runs all the tests
+# except test 10. Whatever order the arguments are in, the tests are always run
+# in numerical order.
+
+# Other arguments can be one of the words "valgrind", "valgrind-log", or "sim"
+# followed by an argument to run cross- compiled executables under a simulator,
+# for example:
#
# RunTest 3 sim "qemu-arm -s 8388608"
#
-#
# There are two special cases where only one argument is allowed:
#
# If the first and only argument is "ebcdic", the script runs the special
@@ -37,8 +45,8 @@
#
# If the script is obeyed as "RunTest list", a list of available tests is
# output, but none of them are run.
+###############################################################################

-
# Define test titles in variables so that they can be output as a list. Some
# of them are modified (e.g. with -8 or -16) when used in the actual tests.

@@ -70,6 +78,8 @@
title25="Test 25: Specials for the 32-bit library"
title26="Test 26: Specials for the 32-bit library with UTF-32 support"

+maxtest=26
+
if [ $# -eq 1 -a "$1" = "list" ]; then
echo $title1
echo $title2 "(not UTF)"
@@ -157,13 +167,14 @@
arg32=
nojit=
sim=
+skip=
valgrind=

# This is in case the caller has set aliases (as I do - PH)
unset cp ls mv rm

-# Select which tests to run; for those that are explicitly requested, check
-# that the necessary optional facilities are available.
+# Process options and select which tests to run; for those that are explicitly
+# requested, check that the necessary optional facilities are available.

 do1=no
 do2=no
@@ -227,7 +238,30 @@
    sim) shift; sim=$1;;
    valgrind) valgrind="valgrind --tool=memcheck -q --smc-check=all";;
    valgrind-log) valgrind="valgrind --tool=memcheck --num-callers=30 --leak-check=no --error-limit=no --smc-check=all --log-file=report.%p ";;
-    *) echo "Unknown test number '$1'"; exit 1;;
+   ~*)
+     if expr "$1" : '~[0-9][0-9]*$' >/dev/null; then
+       skip="$skip `expr "$1" : '~\([0-9]*\)*$'`"
+     else
+       echo "Unknown option or test selector '$1'"; exit 1
+     fi      
+   ;; 
+   *-*)
+     if expr "$1" : '[0-9][0-9]*-[0-9]*$' >/dev/null; then
+       tf=`expr "$1" : '\([0-9]*\)'` 
+       tt=`expr "$1" : '.*-\([0-9]*\)'`
+       if [ "$tt" = "" ] ; then tt=$maxtest; fi 
+       if expr \( "$tf" "<" 1 \) \| \( "$tt" ">" "$maxtest" \) >/dev/null; then
+         echo "Invalid test range '$1'"; exit 1
+       fi       
+       while expr "$tf" "<=" "$tt" >/dev/null; do
+         eval do${tf}=yes
+         tf=`expr $tf + 1`  
+       done
+     else
+       echo "Invalid test range '$1'"; exit 1
+     fi        
+   ;;
+   *) echo "Unknown option or test selector '$1'"; exit 1;;
   esac
   shift
 done
@@ -316,6 +350,12 @@
   jitopt=-s+
 fi


+# Handle any explicit skips
+
+for i in $skip; do eval do$i=no; done
+
+# If any unsuitable tests were explicitly requested, grumble.
+
 if [ $utf -eq 0 ] ; then
   if [ $do4 = yes ] ; then
     echo "Can't run test 4 because UTF support is not configured"
@@ -384,7 +424,7 @@
 fi


# If no specific tests were requested, select all. Those that are not
-# relevant will be skipped.
+# relevant will be automatically skipped.

 if [ $do1  = no -a $do2  = no -a $do3  = no -a $do4  = no -a \
      $do5  = no -a $do6  = no -a $do7  = no -a $do8  = no -a \
@@ -421,6 +461,11 @@
   do26=yes
 fi


+# Handle any explicit skips (again, so that an argument list may consist only
+# of explicit skips).
+
+for i in $skip; do eval do$i=no; done
+
# Show which release and which test data

echo ""