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

Merge with Aug2011 branch.


diffs (truncated from 631 to 300 lines):

diff --git a/sql/test/BugTracker-2009/Tests/rollback_bug.stable.err 
b/sql/test/BugTracker-2009/Tests/rollback_bug.stable.err
--- a/sql/test/BugTracker-2009/Tests/rollback_bug.stable.err
+++ b/sql/test/BugTracker-2009/Tests/rollback_bug.stable.err
@@ -80,7 +80,7 @@ stderr of test 'rollback_bug` in directo
 # 11:34:05 >  mclient -lsql -umonetdb -Pmonetdb --host=alf --port=32901 
 # 11:34:05 >  
 
-MAPI  = monetdb@volund:35971
+MAPI  = monetdb@volund:34492
 QUERY = CREATE TABLE phpbb_attachments (
                attach_id integer DEFAULT next value for 
"sys"."phpbb_attachments_seq",
                post_msg_id integer DEFAULT '0' NOT NULL ,
@@ -95,7 +95,7 @@ ERROR = !type (long) unknown in: "create
         !      in_message smallint default '0' not null ,
         !      poster_id integer default '0' not null ,
         !      is_orphan long default"
-MAPI  = monetdb@volund:35971
+MAPI  = monetdb@volund:34492
 QUERY = CREATE TABLE phpbb_attachments (
                attach_id integer DEFAULT next value for 
"sys"."phpbb_attachments_seq",
                post_msg_id integer DEFAULT '0' NOT NULL ,
@@ -107,15 +107,8 @@ QUERY = CREATE TABLE phpbb_attachments (
                real_filename varchar(255) DEFAULT '' NOT NULL,
                download_count integer DEFAULT '0' NOT NULL ,
                attach_comment varchar(4000) DEFAULT '' NOT NU
-ERROR = !type (long) unknown in: "create table phpbb_attachments (
-        !      attach_id integer default next value for 
"sys"."phpbb_attachments_seq",
-        !      post_msg_id integer default '0' not null ,
-        !      topic_id integer default '0' not null ,
-        !      in_message smallint default '0' not null ,
-        !      poster_id integer default '0' not null ,
-        !      is_orphan long default"
-        !current transaction is aborted (please ROLLBACK)
-MAPI  = monetdb@volund:35971
+ERROR = !current transaction is aborted (please ROLLBACK)
+MAPI  = monetdb@volund:34492
 QUERY = CREATE TABLE phpbb_acl_groups (
                group_id integer DEFAULT '0' NOT NULL ,
                forum_id integer DEFAULT '0' NOT NULL ,
@@ -124,7 +117,7 @@ QUERY = CREATE TABLE phpbb_acl_groups (
                auth_setting smallint DEFAULT '0' NOT NULL
         );
 ERROR = !current transaction is aborted (please ROLLBACK)
-MAPI  = monetdb@volund:35971
+MAPI  = monetdb@volund:34492
 QUERY = COMMIT;
 ERROR = !SQLException:sql.trans:COMMIT: failed
 
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":
@@ -407,6 +433,7 @@ class Timer:
 
 STDOUT = sys.stdout
 STDERR = sys.stdout     # err
+REV = ''                # revision (output of hg id), default unknown
 
 black = 'black'                         # #000000
 white = 'white'                         # #ffffff
@@ -533,7 +560,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:
@@ -607,19 +634,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
@@ -691,11 +705,13 @@ 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')
-    if URLPREFIX:
-        cvs = Element('a', {'href': '%s%s/%s%s' % (URLPREFIX, url(TSTDIR), 
TSTSUFF, URLSUFFIX_D),
-                            'target': target},
-                      cvs)
+    if REV:                     # implies URLPREFIX is not None
+        urlpref = '%s%s/%s' % (URLPREFIX, url(TSTDIR), TSTSUFF)
+        hg = Element('a', {'href': urlpref,
+                           'target': target},
+                     Text('hg'))
+    else:
+        hg = None
     text = Element('div', {'class': 'header'},
                    Text(SYSTEM),
                    Text(' '),
@@ -706,24 +722,40 @@ def CreateTstWhatXhtml (env, TST, stable
                    Text(' between '),
                    Element('a', {'href': '%s%s' % (TST, stableWHAT),
                                  'target': target},
-                           Text('%s (r%s)' % (stableWHAT[1:], REVs))),
-                   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(' in '),
-                   Element('a', {'href': './', 'target': target},
-                           Text(TSTDIR)),
-                   Text(' ('),
-                   cvs,
-                   Text(', '),
-                   Element('a', {'href': url(env['RELSRCDIR']),
-                                 'target': target},
-                           Text('src')))
-    text.addchild(Text(')'))
+                           Text(stableWHAT[1:])))
+    if REV:
+        text.addchildren([
+                Text(' (id '),
+                Element('a', {'href': '%s/%s%s' % (urlpref, TST, stableWHAT),
+                              'target': target}, Text(REV)),
+                Text(')')])
+    text.addchildren([
+            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' % (TST, EXT)))])
+    if REV:
+        text.addchildren([
+                Text(' (id '),
+                Element('a', {'href': '%s/%s%s' % (urlpref, TST, EXT),
+                              'target': target}, Text(REV)),
+                Text(')')])
+    text.addchildren([
+            Text(' in '),
+            Element('a', {'href': './', 'target': target},
+                    Text(TSTDIR)),
+            Text(' (')])
+    if hg:
+        text.addchild(hg)
+        text.addchild(Text(', '))
+    text.addchildren([
+            Element('a', {'href': url(env['RELSRCDIR']),
+                          'target': target},
+                    Text('src')),
+            Text(')')])
     html = Element('html', {},
                    Element('head', {},
                            Element('title', {},
@@ -748,7 +780,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', {},
@@ -803,7 +835,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'},
@@ -1169,7 +1201,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)
 
@@ -1191,8 +1228,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:
@@ -1265,10 +1306,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()
@@ -1294,12 +1336,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'] = ""
@@ -1339,7 +1381,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)
@@ -1350,7 +1392,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()
@@ -1385,10 +1427,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])
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to