Changeset: 4fb77664ac16 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4fb77664ac16
Modified Files:
        testing/Mtest.py.in
Branch: default
Log Message:

Merge with Aug2011 branch.


diffs (truncated from 818 to 300 lines):

diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -51,7 +51,9 @@ import select
 import Mfilter
 import fnmatch
 
+procdebug = False
 verbose = False
+quiet = False
 
 # Python 2.3 doesn't know about os.devnull...
 try:
@@ -981,13 +983,19 @@ def AddSubToHtmlIndex (env, TSTDIR, diff
     return td
 ### AddSubToHtmlIndex (env, TSTDIR, diff) #
 
-def SkipTest(env, TST, EXT, REASON) :
+def SkipTest(env, TST, EXT, REASON, length) :
     TSTDIR = env['TSTDIR']
     TEXT = "Skipping test %s%s %s" % (TST, EXT, REASON)
-    if not env['QUIET']:
+    if quiet:
+        STDOUT.write("-")
+    elif verbose:
         Warn(TEXT)
     else:
-        STDOUT.write("-")
+        if REASON.startswith('as '):
+            REASON = REASON[3:]
+        if REASON.endswith('.'):
+            REASON = REASON[:-1]
+        STDOUT.write('%s%-*s skipped (%s)\n' % (prompt(), length, TST, REASON))
     f = open("."+TST+".SKIPPED","w")
     f.write("\n%s  Warning:  %s\n\n" % (THISFILE, TEXT))
     f.close()
@@ -1060,6 +1068,12 @@ def PerformDir(env, testdir, testlist, B
         Warn("No tests found in '"+TSTSRCDIR+"`; skipping directory!")
         return td, elem
 
+    # find length of longest test name
+    length = 0
+    for tst in testlist:
+        if len(tst[0]) > length:
+            length = len(tst[0])
+
     env['TSTDB']     = TSTDB
     env['TSTDIR']    = TSTDIR
     env['TSTSRCDIR'] = TSTSRCDIR
@@ -1101,9 +1115,11 @@ def PerformDir(env, testdir, testlist, B
 
         body = []
         oktests = []
+        if not verbose and not quiet:
+            print '\nRunning in %s' % TSTDIR
         for TST,COND in testlist:
             os.environ['TST'] = TST
-            tt, FtOut, FtErr, bodyline = RunTest(env, TST, BusyPorts, COND, 
oktests)
+            tt, FtOut, FtErr, bodyline = RunTest(env, TST, BusyPorts, COND, 
oktests, length)
             if tt:
                 t = "%7.3f" % tt
             else:
@@ -1308,7 +1324,7 @@ def GetBitsAndOIDsAndModsAndStaticAndThr
     TSTPREF = env['TSTPREF']
     cmd = splitcommand(env['exe']['Mserver'][1])
     cmd.append('--dbname=%s' % TSTPREF)
-    if verbose:
+    if procdebug:
         print 'GetBitsAndOIDsAndModsAndStaticAndThreads: starting process "%s" 
(inpipe, outpipe, errpipe)\n' % '" "'.join(cmd)
     proc = subprocess.Popen(cmd, stdin = subprocess.PIPE, stdout = 
subprocess.PIPE, stderr = subprocess.PIPE, universal_newlines = True)
     t = Timer(float(par['TIMEOUT']), killProc, args = [proc, proc.stderr, cmd])
@@ -1335,12 +1351,12 @@ def GetBitsAndOIDsAndModsAndStaticAndThr
         ##module("NoModule");
         qOut, qErr = proc.communicate(input = input)
         t.cancel()
-        if verbose:
+        if procdebug:
             print 'GetBitsAndOIDsAndModsAndStaticAndThreads: process exited 
"%s" (%s)\n' % ('" "'.join(cmd), proc.returncode)
     except KeyboardInterrupt:
         t.cancel()
         killProc(proc, proc.stderr, cmd)
-        if verbose:
+        if procdebug:
             print 'GetBitsAndOIDsAndModsAndStaticAndThreads: process killed 
"%s"\n' % '" "'.join(cmd)
         raise
     env['TST_MODS'] = []
@@ -1429,7 +1445,7 @@ def CheckBATs(env, TST, TSTDB) :
 
     cmd = splitcommand(env['exe']['Mserver'][1])
     cmd.append('--dbname=%s' % TSTDB)
-    if verbose:
+    if procdebug:
         print 'CheckBATs: starting process "%s" (inpipe, outpipe, errpipe)\n' 
% '" "'.join(cmd)
     proc = subprocess.Popen(cmd, stdin = subprocess.PIPE, stdout = 
subprocess.PIPE, stderr = subprocess.PIPE, universal_newlines = True)
     t = Timer(float(par['TIMEOUT']), killProc, args = [proc, proc.stderr, cmd])
@@ -1451,12 +1467,12 @@ def CheckBATs(env, TST, TSTDB) :
             quit();
         ''')
         t.cancel()
-        if verbose:
+        if procdebug:
             print 'CheckBATs: process exited "%s" (%s)\n' % ('" "'.join(cmd), 
proc.returncode)
     except KeyboardInterrupt:
         t.cancel()
         killProc(proc, proc.stderr, cmd)
-        if verbose:
+        if procdebug:
             print 'CheckBATs: process killed "%s"\n' % '" "'.join(cmd)
         raise
     TST_BATS = []
@@ -1498,11 +1514,11 @@ def CheckTests(env, TST, oktests):
 ### CheckTests(env, TST, oktests) #
 
 def StartAt(cmd) :
-    if verbose:
+    if procdebug:
         print 'StartAt: starting process "%s" (inpipe, outpipe, errpipe)\n' % 
cmd
     proc = subprocess.Popen(cmd, shell = True, stdin = subprocess.PIPE, stdout 
= subprocess.PIPE, stderr = subprocess.PIPE, universal_newlines = True)
     qOut, qErr = proc.communicate()
-    if verbose:
+    if procdebug:
         print 'StartAt: starting exited "%s"\n' % cmd
     return qOut.split('\n', 1)[0].strip()
 ### StartAt(cmd) #
@@ -1553,7 +1569,7 @@ def StableOutErr(env,par,TST,SYST,RELEAS
     return STABLEout, STABLEerr
 ### StableOutErr(env,par,TST,SYST,RELEASE,DIST,VERSION) #
 
-def RunTest(env, TST, BusyPorts, COND, oktests) :
+def RunTest(env, TST, BusyPorts, COND, oktests, length) :
     Failed = F_SKIP
     FailedOut = F_SKIP
     FailedErr = F_SKIP
@@ -1566,8 +1582,6 @@ def RunTest(env, TST, BusyPorts, COND, o
     os.chdir(TSTSRCDIR)
     elem = None
 
-    quiet = env['QUIET']
-
     TX = 0
     EXT = CALL = SERVER = ""
     x  = isexecutable(TST)
@@ -1611,12 +1625,12 @@ def RunTest(env, TST, BusyPorts, COND, o
     else:
         i = TST.rfind('.')
         if i > 0:
-            return RunTest(env, TST[:i], BusyPorts, COND, oktests)
+            return RunTest(env, TST[:i], BusyPorts, COND, oktests, length)
         EXT = CALL = SERVER = ""
         if   COND and not CONDITIONALS.has_key(COND):
-            elem = SkipTest(env, TST, EXT, "as conditional '%s' is unknown." % 
COND)
+            elem = SkipTest(env, TST, EXT, "as conditional '%s' is unknown." % 
COND, length)
         elif COND and not CONDITIONALS[COND]:
-            elem = SkipTest(env, TST, EXT, "as conditional '%s' does not 
hold." % COND)
+            elem = SkipTest(env, TST, EXT, "as conditional '%s' does not 
hold." % COND, length)
         elif os.name == "nt":
             ErrMsg("test missing: 
'"+os.path.join(TSTSRCDIR,TST)+".(exe|com|bat|cmd|py|mal|malC|sql)`")
             #TODO:
@@ -1636,36 +1650,36 @@ def RunTest(env, TST, BusyPorts, COND, o
     os.chdir(TSTTRGDIR)
 
     if   COND and not CONDITIONALS.has_key(COND):
-        elem = SkipTest(env, TST, EXT, "as conditional '%s' is unknown." % 
COND)
+        elem = SkipTest(env, TST, EXT, "as conditional '%s' is unknown." % 
COND, length)
     elif COND and not CONDITIONALS[COND]:
-        elem = SkipTest(env, TST, EXT, "as conditional '%s' does not hold." % 
COND)
+        elem = SkipTest(env, TST, EXT, "as conditional '%s' does not hold." % 
COND, length)
     elif MissingTests:
-        elem = SkipTest(env, TST, EXT, "as required test%s '%s' failed." % 
(len(MissingTests) != 1 and 's' or '', "', '".join(MissingTests)))
+        elem = SkipTest(env, TST, EXT, "as required test%s '%s' failed." % 
(len(MissingTests) != 1 and 's' or '', "', '".join(MissingTests)), length)
     elif EXT == ".malC" and  not env['exe']['MAL_Client'][0]:
-        elem = SkipTest(env, TST, EXT, "as "+env['MALCLIENT'].split(None, 
1)[0]+" is not available.")
+        elem = SkipTest(env, TST, EXT, "as "+env['MALCLIENT'].split(None, 
1)[0]+" is not available.", length)
     elif EXT == ".sql" and  not env['exe']['SQL_Client'][0]:
-        elem = SkipTest(env, TST, EXT, "as "+env['SQLCLIENT'].split(None, 
1)[0]+" is not available.")
+        elem = SkipTest(env, TST, EXT, "as "+env['SQLCLIENT'].split(None, 
1)[0]+" is not available.", length)
     elif EXT == ".sql" and  not env['exe']['SQL_Dump'][0]:
-        elem = SkipTest(env, TST, EXT, "as "+env['SQLDUMP'].split(None, 
1)[0]+" is not available.")
+        elem = SkipTest(env, TST, EXT, "as "+env['SQLDUMP'].split(None, 
1)[0]+" is not available.", length)
     elif SERVER in ["MAL", "SQL"] and not env['exe']['Mserver'][0]:
-        elem = SkipTest(env, TST, EXT, "as "+env['MSERVER'].split(None, 
1)[0]+" is not available.")
+        elem = SkipTest(env, TST, EXT, "as "+env['MSERVER'].split(None, 
1)[0]+" is not available.", length)
     elif EXT == ".malS" and not env['exe']['Mserver'][0]:
-        elem = SkipTest(env, TST, EXT, "as "+env['MSERVER'].split(None, 
1)[0]+" is not available.")
+        elem = SkipTest(env, TST, EXT, "as "+env['MSERVER'].split(None, 
1)[0]+" is not available.", length)
     elif CALL == "python"  and  not env['exe']['python'][0]:
-        elem = SkipTest(env, TST, EXT, "as python is not available.")
+        elem = SkipTest(env, TST, EXT, "as python is not available.", length)
         #TODO:
         #elif [ "$EXT" = "java"  -a  ! "`type -path java`" ] ; then
-        #elem = SkipTest(env, TST, EXT, "as java is not in $PATH.")
+        #elem = SkipTest(env, TST, EXT, "as java is not in $PATH.", length)
     elif MissingMods:
-        elem = SkipTest(env, TST, EXT, "as modules '"+str(MissingMods)+"` are 
missing.")
+        elem = SkipTest(env, TST, EXT, "as modules '"+str(MissingMods)+"` are 
missing.", length)
     elif MissingBATs:
-        elem = SkipTest(env, TST, EXT, "as BATs '"+str(MissingBATs)+"` are 
missing in database '"+TSTDB+"`.")
+        elem = SkipTest(env, TST, EXT, "as BATs '"+str(MissingBATs)+"` are 
missing in database '"+TSTDB+"`.", length)
     elif CALL == "malCXp":
-        elem = SkipTest(env, TST, EXT, "as multiple MAL clients in parallel 
are currently not supported by "+THISFILE+".")
+        elem = SkipTest(env, TST, EXT, "as multiple MAL clients in parallel 
are currently not supported by "+THISFILE+".", length)
     elif CALL == "sqlXp":
-        elem = SkipTest(env, TST, EXT, "as multiple SQL clients in parallel 
are currently not supported by "+THISFILE+".")
+        elem = SkipTest(env, TST, EXT, "as multiple SQL clients in parallel 
are currently not supported by "+THISFILE+".", length)
     elif SERVER in ["MAL", "SQL"] and "MAPI" in BusyPorts:
-        elem = SkipTest(env, TST, EXT, "as MAPIPORT=%s is not available." % 
(env['MAPIPORT']))
+        elem = SkipTest(env, TST, EXT, "as MAPIPORT=%s is not available." % 
(env['MAPIPORT']), length)
     else:
         test = re.compile("^"+TST+"((_[sp][0-9][0-9])?\..*)?$", re.MULTILINE)
         for f in os.listdir(RELSRCDIR):
@@ -1679,7 +1693,7 @@ def RunTest(env, TST, BusyPorts, COND, o
         # Check for available sockets and block them until we're ready to run 
the actual test
         MAPIsockets, reason = CheckSocket2(env, "MAPI")   #, SrvrErr)
         if MAPIsockets is None:
-            elem = SkipTest(env, TST, EXT, "as "+reason)
+            elem = SkipTest(env, TST, EXT, "as "+reason, length)
             return TX,Failed,Failed,elem
 
         if os.path.isfile(TST+EXT+".src")  and not os.path.isfile(TST+EXT):
@@ -1693,7 +1707,7 @@ def RunTest(env, TST, BusyPorts, COND, o
                     ErrMsg("SymlinkOrCopy('%s','%s') in '%s' failed with #%d: 
'%s'."
                            % (TSTSRC,TST+EXT,os.getcwd(),IOerrNo, IOerrStr))
             else:
-                elem = SkipTest(env, TST, EXT+".src", "as source file 
'"+TSTSRC+"` is missing.")
+                elem = SkipTest(env, TST, EXT+".src", "as source file 
'"+TSTSRC+"` is missing.", length)
                 # Release reserved sockets before bailing out
                 MAPIsockets[0].close()
                 MAPIsockets[1].close()
@@ -1806,7 +1820,6 @@ def RunTest(env, TST, BusyPorts, COND, o
             MkillUsers = (WHAT0+" "+WHAT1).replace('\\','')
             MkillUsersAT = "echo  "+WHAT+"  2>/dev/null | at now + 1 minute 
2>&1 | awk '/^[Jj]ob/{print $2}'"
 
-        #if THISFILE == "Mtest.py":
         TestOutFile = TST+".test.out"
         TestErrFile = TST+".test.err"
         TestOut = open(TestOutFile,"w")
@@ -1817,7 +1830,7 @@ def RunTest(env, TST, BusyPorts, COND, o
         TestErr.close()
 
         t0 = time.time()
-        tres = DoIt(env, SERVER, CALL, TST, EXT, PRELUDE, TestOutFile, 
TestErrFile, STIMEOUT, CTIMEOUT, TIMEOUT, MkillUsersAT, ME, MAPIsockets)
+        tres = DoIt(env, SERVER, CALL, TST, EXT, PRELUDE, TestOutFile, 
TestErrFile, STIMEOUT, CTIMEOUT, TIMEOUT, MkillUsersAT, ME, MAPIsockets, length)
 
         t1 = time.time()
         TX = t1 - t0
@@ -1884,28 +1897,28 @@ def RunTest(env, TST, BusyPorts, COND, o
         if timeout == F_TIME:
             if quiet:
                 STDOUT.write("\n%s : Timeout!\n" % TST)
-            else:
+            elif verbose:
                 STDOUT.write("(Timeout!) ")
 
         if recursion == F_RECU:
             if quiet:
                 STDOUT.write("\n%s : Recursion!\n" % TST)
-            else:
+            elif verbose:
                 STDOUT.write("(Recursion!) ")
 
         if killed == F_KILL:
             if quiet:
                 STDOUT.write("\n%s : Killed!\n" % TST)
-            else:
+            elif verbose:
                 STDOUT.write("(Killed!) ")
 
         if segfaulted == F_SEGV:
             if quiet:
                 STDOUT.write("\n%s : Crashed!\n" % TST)
-            else:
+            elif verbose:
                 STDOUT.write("(Crashed!) ")
 
-        if not quiet:
+        if verbose:
             STDOUT.write("\n")
 
         try:
@@ -1918,149 +1931,184 @@ def RunTest(env, TST, BusyPorts, COND, o
             env['exe']['Mtimeout'] = env['exe']['Mtimeout'][0], 'Mtimeout 
-timeout %s ' % str(par['TIMEOUT'])
             SetExecEnv(env['exe'],0)
 
-        if THISFILE == "Mtest.py":
+        try:
+            Mfilter.mFilter(TST+STABLEout,par['IGNORE'])
+            Mfilter.mFilter(TST+STABLEerr,par['IGNORE'])
+            Mfilter.mFilter(TST+".test.out",par['IGNORE'])
+            Mfilter.mFilter(TST+".test.err",par['IGNORE'])
+        except:
+            Warn("mFilter failed\n")
+            pass
+
+        if REV:
+            hglink = ' (id <a href="%s%s/%s/%s%s">%s</a>)' % (URLPREFIX, 
url(TSTDIR), TSTSUFF, TST, EXT, REV)
+        else:
+            hglink = ''
+        diff_html = open('%s.out.diff.html' % TST,"w")
+        diff_html.write('<!--MajorDiffs-->\n')
+        diff_html.close()
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to