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

Remove CVS remnants, fix HG URLs/IDs, more/better use of subprocess module.


diffs (truncated from 474 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
@@ -126,6 +126,32 @@ except ImportError:
             p = p + os.pathsep + os.environ['PYTHONPATH']
         os.environ['PYTHONPATH'] = p
 
+import string                   # for whitespace
+def splitcommand(cmd):
+    '''Like string.split, except take quotes into account.'''
+    q = None
+    w = []
+    command = []
+    for c in cmd:
+        if q:
+            if c == q:
+                q = None
+            else:
+                w.append(c)
+        elif c in string.whitespace:
+            if w:
+                command.append(''.join(w))
+            w = []
+        elif c == '"' or c == "'":
+            q = c
+        else:
+            w.append(c)
+    if w:
+        command.append(''.join(w))
+    if len(command) > 1 and command[0] == 'call':
+        del command[0]
+    return command
+
 def isexecutable(TST, ext = '.sh') :
     if   os.name == "nt":
         for ext in ".exe", ".com", ".bat", ".cmd":
@@ -405,6 +431,7 @@ class Timer:
 
 STDOUT = sys.stdout
 STDERR = sys.stdout     # err
+REV = '?'               # revision (output if hg id)
 
 black = 'black'                         # #000000
 white = 'white'                         # #ffffff
@@ -531,7 +558,7 @@ def CreateHtmlIndex (env, *body) :
             if URLPREFIX:
                 header = Element('a',
                                  {'href': '%s%s/%s' % (URLPREFIX, url(TSTDIR), 
TSTSUFF),
-                                  'target': '%s%s_%s_body' % (URLSUFFIX_D, 
DISTVER, TSTDIR),
+                                  'target': '%s_%s_body' % (DISTVER, TSTDIR),
                                   'class': 'black'},
                                  header)
         else:
@@ -605,19 +632,6 @@ def CreateTstWhatXhtml (env, TST, stable
     TSTDIR    = env['TSTDIR']
     TSTSRCDIR = env['TSTSRCDIR']
 
-    testT = re.compile("^/"+TST+EXT+"/([^/]*)/", re.MULTILINE)
-    testS = re.compile("^/"+TST+stableWHAT+"/([^/]*)/", re.MULTILINE)
-    REVt="?"
-    REVs="?"
-    entries = os.path.join(TSTSRCDIR,"CVS","Entries")
-    if os.path.isfile(entries):
-        for l in open(entries):
-            mT = testT.match(l)
-            if mT:
-                REVt=mT.group(1)
-            mS = testS.match(l)
-            if mS:
-                REVs=mS.group(1)
     l = ''
     for l in open(TST+WHAT+".diff.html"):
         pass
@@ -689,11 +703,11 @@ def CreateTstWhatXhtml (env, TST, stable
     f.close()
     f = open(".%s%s.head.html" % (TST, WHAT),"w")
     target = '%s_%s_%s_%s_body' % (DISTVER, TSTDIR, TST, WHAT[1:])
-    cvs = Text('cvs')
+    hg = Text('hg')
     if URLPREFIX:
-        cvs = Element('a', {'href': '%s%s/%s%s' % (URLPREFIX, url(TSTDIR), 
TSTSUFF, URLSUFFIX_D),
-                            'target': target},
-                      cvs)
+        hg = Element('a', {'href': '%s%s/%s' % (URLPREFIX, url(TSTDIR), 
TSTSUFF),
+                           'target': target},
+                     hg)
     text = Element('div', {'class': 'header'},
                    Text(SYSTEM),
                    Text(' '),
@@ -704,19 +718,19 @@ def CreateTstWhatXhtml (env, TST, stable
                    Text(' between '),
                    Element('a', {'href': '%s%s' % (TST, stableWHAT),
                                  'target': target},
-                           Text('%s (r%s)' % (stableWHAT[1:], REVs))),
+                           Text('%s (id %s)' % (stableWHAT[1:], REV))),
                    Text(' and '),
                    Element('a', {'href': '%s.test%s' % (TST, WHAT),
                                  'target': target},
                            Text('test%s' % WHAT)),
                    Text(' of '),
                    Element('a', {'href': TST + EXT, 'target': target},
-                           Text('%s%s (r%s)' % (TST, EXT, REVt))),
+                           Text('%s%s (id %s)' % (TST, EXT, REV))),
                    Text(' in '),
                    Element('a', {'href': './', 'target': target},
                            Text(TSTDIR)),
                    Text(' ('),
-                   cvs,
+                   hg,
                    Text(', '),
                    Element('a', {'href': url(env['RELSRCDIR']),
                                  'target': target},
@@ -746,7 +760,7 @@ def CreateSrcIndex (env, TST, EXT) :
     TSTDIR    = env['TSTDIR']
 
     if URLPREFIX:
-        framesrc = '%s%s/%s/%s%s%s' % (URLPREFIX, url(TSTDIR), TSTSUFF, TST, 
EXT, URLSUFFIX_F)
+        framesrc = '%s%s/%s/%s%s' % (URLPREFIX, url(TSTDIR), TSTSUFF, TST, EXT)
     else:
         f = open("."+TST+".nosrc.index.html","w")
         html = Element('html', {},
@@ -801,7 +815,7 @@ def CreateSrcIndex (env, TST, EXT) :
             slink = Text(s)
             if URLPREFIX:
                 slink = Element('a',
-                                {'href': '%s%s/%s/%s%s' % (URLPREFIX, 
url(TSTDIR), TSTSUFF, s, URLSUFFIX_F),
+                                {'href': '%s%s/%s/%s' % (URLPREFIX, 
url(TSTDIR), TSTSUFF, s),
                                  'target': '%s_%s_%s_body' % (DISTVER, TSTDIR, 
TST)},
                                 slink)
             tr.addchild(Element('td', {'class': 'header'},
@@ -1167,7 +1181,12 @@ def ApproveOutput (env, TST) :
             else:
                 patch = os.path.join(os.sep, 'tmp')
             patch = os.path.join(patch, "%s.patch-%s" % 
(os.path.basename(stableOUTPUT), str(os.getpid())))
-            os.system('diff -Bb "-I^[#=]" -U0 "%s" "%s" > "%s"' % 
(stableOUTPUT,testOUTPUT,patch+".0"))
+            f = open(patch + '.0', 'w')
+            proc = subprocess.Popen(['diff', '-Bb', '-I^[#=]', '-U0',
+                                     stableOUTPUT, testOUTPUT],
+                                    stdout = f)
+            proc.wait()
+            f.close()
             if os.path.getsize(patch+".0"):
                 print "Approving  %s  ->  stable.%s%s   (%s file)" % 
(os.path.join(TSTDIR,TST+".test."+WHAT), WHAT, SYSTEM, oc)
 
@@ -1189,8 +1208,12 @@ def ApproveOutput (env, TST) :
                 f.flush()
                 f.close()
                 shutil.copy(stableOUTPUT,stableOUTPUT+".ORG")
-                os.system('patch "%s" "%s"' % (stableOUTPUT,patch+".1"))
-                os.system('diff -u "%s" "%s" > "%s"' % 
(stableOUTPUT+".ORG",stableOUTPUT,patch))
+                proc = subprocess.Popen(['patch', stableOUTPUT, patch + '.1'])
+                proc.wait()
+                f = open(patch, 'w')
+                proc = subprocess.Popen(['diff', '-u', stableOUTPUT + '.ORG', 
stableOUTPUT], stdout = f)
+                proc.wait()
+                f.close()
                 os.remove(stableOUTPUT+".ORG")
                 os.remove(patch+".1")
             else:
@@ -1263,10 +1286,11 @@ def expandvars(path, environ = os.enviro
 def GetBitsAndOIDsAndModsAndStaticAndThreads(env) :
     rtrn = 0
     TSTPREF = env['TSTPREF']
-    cmd = '%s --dbname=%s' % (env['exe']['Mserver'][1], TSTPREF)
+    cmd = splitcommand(env['exe']['Mserver'][1])
+    cmd.append('--dbname=%s' % TSTPREF)
     if verbose:
-        print 'GetBitsAndOIDsAndModsAndStaticAndThreads: 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)
+        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])
     try:
         t.start()
@@ -1292,12 +1316,12 @@ def GetBitsAndOIDsAndModsAndStaticAndThr
         qOut, qErr = proc.communicate(input = input)
         t.cancel()
         if verbose:
-            print 'GetBitsAndOIDsAndModsAndStaticAndThreads: process exited 
"%s" (%s)\n' % (cmd, proc.returncode)
+            print 'GetBitsAndOIDsAndModsAndStaticAndThreads: process exited 
"%s" (%s)\n' % ('" "'.join(cmd), proc.returncode)
     except KeyboardInterrupt:
         t.cancel()
         killProc(proc, proc.stderr, cmd)
         if verbose:
-            print 'GetBitsAndOIDsAndModsAndStaticAndThreads: process killed 
"%s"\n' % cmd
+            print 'GetBitsAndOIDsAndModsAndStaticAndThreads: process killed 
"%s"\n' % '" "'.join(cmd)
         raise
     env['TST_MODS'] = []
     env['TST_BITS'] = ""
@@ -1337,7 +1361,7 @@ def GetBitsAndOIDsAndModsAndStaticAndThr
         if not env['TST_MODS']:
             ErrMsg("Checking for Modules failed!")
         if not env['TST_BITS'] or not env['TST_OIDS'] or not env['TST_MODS']:
-            STDERR.write(cmd + "\n\n")
+            STDERR.write(' '.join(cmd) + "\n\n")
             STDERR.write(qOut)
             STDERR.write("\n")
             STDERR.write(qErr)
@@ -1348,7 +1372,7 @@ def GetBitsAndOIDsAndModsAndStaticAndThr
         rtrn = 1
         ErrMsg("No output from Mserver/mserver5 when checking for Bits, OIDs, 
Modules & Threads!?")
         if qErr:
-            STDERR.write(cmd + "\n\n")
+            STDERR.write(' '.join(cmd) + "\n\n")
             STDERR.write(qErr)
             STDERR.write("\n")
             STDERR.flush()
@@ -1383,10 +1407,11 @@ def CheckBATs(env, TST, TSTDB) :
         # Warn("MonetDB/5: Check, whether required BATs do exist, is not 
possible, yet!")
         return missing
 
-    cmd = '%s --dbname=%s' % (env['exe']['Mserver'][1], TSTDB)
+    cmd = splitcommand(env['exe']['Mserver'][1])
+    cmd.append('--dbname=%s' % TSTDB)
     if verbose:
-        print 'CheckBATs: 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)
+        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])
     try:
         t.start()
@@ -1407,12 +1432,12 @@ def CheckBATs(env, TST, TSTDB) :
         ''')
         t.cancel()
         if verbose:
-            print 'CheckBATs: process exited "%s" (%s)\n' % (cmd, 
proc.returncode)
+            print 'CheckBATs: process exited "%s" (%s)\n' % ('" "'.join(cmd), 
proc.returncode)
     except KeyboardInterrupt:
         t.cancel()
         killProc(proc, proc.stderr, cmd)
         if verbose:
-            print 'CheckBATs: process killed "%s"\n' % cmd
+            print 'CheckBATs: process killed "%s"\n' % '" "'.join(cmd)
         raise
     TST_BATS = []
     if qOut:
@@ -1424,7 +1449,7 @@ def CheckBATs(env, TST, TSTDB) :
     else:
         Warn("No output from Mserver when checking for Bats!?")
         if qErr:
-            STDERR.write(cmd + "\n\n")
+            STDERR.write(' '.join(cmd) + "\n\n")
             STDERR.write(qErr)
             STDERR.write("\n")
             STDERR.flush()
@@ -1881,22 +1906,6 @@ def RunTest(env, TST, BusyPorts, COND, o
                 Warn("mFilter failed\n")
                 pass
 
-            testO = re.compile("^/"+TST+STABLEout+"/([^/]*)/", re.MULTILINE)
-            testE = re.compile("^/"+TST+STABLEerr+"/([^/]*)/", re.MULTILINE)
-            REVo="?"
-            REVe="?"
-            entries = os.path.join(TSTSRCDIR,"CVS","Entries")
-            if os.path.isfile(entries):
-                for l in open(entries):
-                    mO = testO.match(l)
-                    if mO:
-                        REVo=mO.group(1)
-                    mE = testE.match(l)
-                    if mE:
-                        REVe=mE.group(1)
-            REVo=" (r"+REVo+")"
-            REVe=" (r"+REVe+")"
-
             MDIFF0 = env['exe']['Mdiff'][1]
             MDIFF1 = MDIFF0+' -d'
 
@@ -1906,7 +1915,7 @@ def RunTest(env, TST, BusyPorts, COND, o
             #       timedout = 0
             #       signal.alarm(par['TIMEOUT'])
             #       try:
-            #               os.system(MDIFF+' -I"'+par['IGNORE']+'" 
-C'+par['CONTEXT']+' -A'+str(ACCURACY)+' -r"'+REVo+'" 
'+TST+STABLEout+'.FILTERED '+TST+'.test.out.FILTERED '+TST+'.out.diff.html')
+            #               os.system(MDIFF+' -I"'+par['IGNORE']+'" 
-C'+par['CONTEXT']+' -A'+str(ACCURACY)+' -r"'+REV+'" '+TST+STABLEout+'.FILTERED 
'+TST+'.test.out.FILTERED '+TST+'.out.diff.html')
             #       except TimeoutError, t:
             #               timedout = 1
             #       signal.alarm(0)
@@ -1938,12 +1947,14 @@ def RunTest(env, TST, BusyPorts, COND, o
                     cmd.append('-d')
                 if quiet:
                     cmd.append('-q')
+                cmd.extend(['-F^#', '-I%s' % par['IGNORE'],
+                            '-C%s' % par['CONTEXT'], '-A%d' % ACCURACYout,
+                            '-r (%s)' % REV, '%s%s.FILTERED' % (TST, 
STABLEout),
+                            '%s.test.out.FILTERED' % TST,
+                            '%s.out.diff.html' % TST])
                 if verbose:
-                    print 'RunTest: starting process',
-                    for a in cmd + ['-F^#', '-I%s' % par['IGNORE'], '-C%s' % 
par['CONTEXT'], '-A%d' % ACCURACYout, '-r%s' % REVe, '%s%s.FILTERED' % (TST, 
STABLEout), '%s.test.out.FILTERED' % TST, '%s.out.diff.html' % TST]:
-                        print '"%s"' % a,
-                    print '\n'
-                proc = subprocess.Popen(cmd + ['-F^#', '-I%s' % par['IGNORE'], 
'-C%s' % par['CONTEXT'], '-A%d' % ACCURACYout, '-r%s' % REVe, '%s%s.FILTERED' % 
(TST, STABLEout), '%s.test.out.FILTERED' % TST, '%s.out.diff.html' % TST])
+                    print 'RunTest: starting process "%s"\n' % '" "'.join(cmd)
+                proc = subprocess.Popen(cmd)
                 proc.killed = False
                 t = Timer(float(par['TIMEOUT']), killProc, args = [proc])
                 try:
@@ -1951,26 +1962,26 @@ def RunTest(env, TST, BusyPorts, COND, o
                     proc.wait()
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to