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