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