Changeset: 2d4810d81cc6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2d4810d81cc6
Branch: default
Log Message:

merged


diffs (truncated from 852 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
@@ -62,12 +62,12 @@ mapiportre = re.compile(r'mapi:monetdb:/
 geos_version = '@GEOS_VERSION@'.split('.')
 
 # default is no color (these three functions may get redefined)
-def prred(str, write = sys.stdout.write):
-    write(str)
-def prgreen(str, write = sys.stdout.write):
-    write(str)
-def prpurple(str, write = sys.stdout.write):
-    write(str)
+def prred(str):
+    print(str, end='')
+def prgreen(str):
+    print(str, end='')
+def prpurple(str):
+    print(str, end='')
 if isatty:
     if os.name != 'nt':
         # color output a little
@@ -75,24 +75,24 @@ if isatty:
         GREEN = '\033[0;32m'
         PURPLE = '\033[1;35m'       # actually magenta
         BLACK = '\033[0;0m'
-        def prred(str, write = sys.stdout.write):
+        def prred(str):
             try:
-                write(RED)
-                write(str)
+                print(RED, end='')
+                print(str, end='')
             finally:
-                write(BLACK)
-        def prgreen(str, write = sys.stdout.write):
+                print(BLACK, end='')
+        def prgreen(str):
             try:
-                write(GREEN)
-                write(str)
+                print(GREEN, end='')
+                print(str, end='')
             finally:
-                write(BLACK)
-        def prpurple(str, write = sys.stdout.write):
+                print(BLACK, end='')
+        def prpurple(str):
             try:
-                write(PURPLE)
-                write(str)
+                print(PURPLE, end='')
+                print(str, end='')
             finally:
-                write(BLACK)
+                print(BLACK, end='')
     else:
         try:
             import ctypes
@@ -115,36 +115,27 @@ if isatty:
                     return wattr
                 reset = get_csbi_attributes(handle)
                 def prred(str,
-                          write=sys.stdout.write,
-                          flush=sys.stdout.flush,
                           scta=ctypes.windll.kernel32.SetConsoleTextAttribute):
                     try:
-                        flush()
+                        print(end='', flush=True)
                         scta(handle, 0x4)
-                        write(str)
-                        flush()
+                        print(str, end='', flush=True)
                     finally:
                         scta(handle, reset)
                 def prgreen(str,
-                            write=sys.stdout.write,
-                            flush=sys.stdout.flush,
                             
scta=ctypes.windll.kernel32.SetConsoleTextAttribute):
                     try:
-                        flush()
+                        print(end='', flush=True)
                         scta(handle, 0x2)
-                        write(str)
-                        flush()
+                        print(str, end='', flush=True)
                     finally:
                         scta(handle, reset)
                 def prpurple(str,
-                             write=sys.stdout.write,
-                             flush=sys.stdout.flush,
                              
scta=ctypes.windll.kernel32.SetConsoleTextAttribute):
                     try:
-                        flush()
+                        print(end='', flush=True)
                         scta(handle, 0x5)
-                        write(str)
-                        flush()
+                        print(str, end='', flush=True)
                     finally:
                         scta(handle, reset)
 
@@ -166,7 +157,7 @@ if os.path.exists('/usr/bin/coredumpctl'
             pass
 
 def ErrExit(msg):
-    sys.stderr.write(msg + '\n')
+    print(msg, file=sys.stderr, flush=True)
     sys.exit(1)
 
 def _configure(str):
@@ -581,8 +572,6 @@ class Timer:
             self.timer.cancel()
             self.timer = None
 
-STDOUT = sys.stdout
-STDERR = sys.stdout     # err
 REV = ''                # revision (output of hg id), default unknown
 
 black = 'black'                         # #000000
@@ -622,9 +611,8 @@ random.seed(time.time())
 #### AlarmHandler(signum, frame) #
 
 def ErrMsg(TEXT) :
-    STDOUT.flush()
-    STDERR.write("\n%s:  ERROR:  %s\n\n" % (THISFILE, TEXT))
-    STDERR.flush()
+    print(end='', flush=True)
+    print("\n%s:  ERROR:  %s\n" % (THISFILE, TEXT), file=sys.stderr, 
flush=True)
 ### ErrMsg(TEXT) #
 
 def ErrXit(TEXT) :
@@ -634,12 +622,11 @@ def ErrXit(TEXT) :
 
 def Warn(TEXT) :
     try:
-        STDOUT.flush()
+        print(end='', flush=True)
     except IOError:
         pass
     try:
-        STDERR.write("\n%s  Warning:  %s\n\n" % (THISFILE, TEXT))
-        STDERR.flush()
+        print("\n%s  Warning:  %s\n" % (THISFILE, TEXT), file=sys.stderr, 
flush=True)
     except IOError:
         pass
 ### Warn(TEXT) #
@@ -1130,7 +1117,7 @@ def SkipTest(env, TST, EXT, REASON, leng
     TSTDIR = env['TSTDIR']
     TEXT = "Skipping test %s%s %s" % (TST, EXT, REASON)
     if quiet:
-        STDOUT.write("-")
+        pass
     elif verbose:
         Warn(TEXT)
     else:
@@ -1148,7 +1135,7 @@ def SkipTest(env, TST, EXT, REASON, leng
                 s = '%s...%s' % (TST[:l//2 - 2], TST[-(l//2 - 1):])
         else:
             s = '%-*s' % (length, TST)
-        STDOUT.write('%s%s skipped (%s)\n' % (prompt(), s, REASON))
+        print('%s%s skipped (%s)' % (prompt(), s, REASON))
 
     if testweb:
         return None
@@ -1177,21 +1164,39 @@ def SkipTest(env, TST, EXT, REASON, leng
     return td
 ### SkipTest(env, TST, EXT, REASON) #
 
-def find_test_dirs(thisdir) :
-    testdirs = []
+def find_test_dirs(thisdir, recursive=True) :
     thisdir = os.path.realpath(thisdir)
     dirnme = os.path.basename(thisdir)
+    if not recursive and dirnme != TSTSUFF and 
os.path.isdir(os.path.join(thisdir, TSTSUFF)):
+        return find_test_dirs(os.path.join(thisdir, TSTSUFF), recursive)
+    testdirs = []
     dirlst = listdir(thisdir)
+    tstcnt = 0
     if dirnme == TSTSUFF  and  "All" in dirlst  and  
os.path.isfile(os.path.join(thisdir,"All")):
-        testdirs.append(os.path.dirname(thisdir))
-    for d in dirlst:
-        d = os.path.join(thisdir,d)
-        if os.path.isdir(d):
-            testdirs = testdirs + find_test_dirs(d)
-    return testdirs
+        try:
+            allf = openutf8(os.path.join(thisdir,"All"))
+        except IOError:
+            pass
+        else:
+            cnt = 0
+            for tc in allf:
+                tc = tc.strip()
+                if tc != '' and not tc.startswith('#'):
+                    cnt += 1
+            if cnt > 0:
+                testdirs.append(os.path.dirname(thisdir))
+                tstcnt += cnt
+    if recursive:
+        for d in dirlst:
+            d = os.path.join(thisdir,d)
+            if os.path.isdir(d):
+                tst, cnt = find_test_dirs(d)
+                testdirs.extend(tst)
+                tstcnt += cnt
+    return testdirs, tstcnt
 ### find_test_dirs(thisdir) #
 
-def PerformDir(env, testdir, testlist, all_tests = False) :
+def PerformDir(env, testdir, testlist, all_tests, total_tests, test_progress) :
     interrupted = False
     td = 0
     elem = None
@@ -1261,7 +1266,7 @@ def PerformDir(env, testdir, testlist, a
             testlist = alltests
         if not testlist:
             Warn("No tests found in '%s`; skipping directory!" % TSTSRCDIR)
-            return td, elem, max(FdOut, FdErr), interrupted
+            return td, elem, max(FdOut, FdErr), interrupted, test_progress
 
         # find length of longest test name
         length = 0
@@ -1290,11 +1295,6 @@ def PerformDir(env, testdir, testlist, a
             os.environ['TSTDATAPATH'] = TSTDATAPATH
 
 
-        #STDERR.flush()
-        #for v in 'RELSRCDIR':
-        #       print(v+" = "+str(env[v]))
-        #STDOUT.flush()
-
         if 'GDK_DBFARM' in env:
             LogDBdir = os.path.join(env['GDK_DBFARM'],TSTDB)
             if not env.get('NOCLEAN') and LogDBdir and 
os.path.exists(LogDBdir):
@@ -1306,7 +1306,7 @@ def PerformDir(env, testdir, testlist, a
                     Warn("database '%s` exists, but destroying it failed; 
skipping tests in '%s`!" % (TSTDB, TSTSRCDIR))
                     #TODO:
                     # add "something" to HTML output
-                    return td, elem, max(FdOut, FdErr), interrupted
+                    return td, elem, max(FdOut, FdErr), interrupted, 
test_progress
             if os.path.isabs(LogDBdir) and not os.path.exists(LogDBdir):
                 try:
                     os.makedirs(LogDBdir)
@@ -1314,7 +1314,7 @@ def PerformDir(env, testdir, testlist, a
                     Warn("creating database '%s` failed; skipping tests in 
'%s`!" % (TSTDB, TSTSRCDIR))
                     #TODO:
                     # add "something" to HTML output
-                    return td, elem, max(FdOut, FdErr), interrupted
+                    return td, elem, max(FdOut, FdErr), interrupted, 
test_progress
             if initdb:
                 import zipfile
                 try:
@@ -1323,7 +1323,7 @@ def PerformDir(env, testdir, testlist, a
                     Warn("initial database '%s` cannot be opened; skipping 
tests in '%s`!" % (initdb, TSTSRCDIR))
                     #TODO:
                     # add "something" to HTML output
-                    return td, elem, max(FdOut, FdErr), interrupted
+                    return td, elem, max(FdOut, FdErr), interrupted, 
test_progress
                 try:
                     z.extractall(LogDBdir)
                 except KeyboardInterrupt:
@@ -1332,7 +1332,7 @@ def PerformDir(env, testdir, testlist, a
                     Warn("initial database '%s` cannot be extracted; skipping 
tests in '%s`!" % (initdb, TSTSRCDIR))
                     #TODO:
                     # add "something" to HTML output
-                    return td, elem, max(FdOut, FdErr), interrupted
+                    return td, elem, max(FdOut, FdErr), interrupted, 
test_progress
                 z.close()
                 if not oneserver:
                     pSrvr = 
ServerClass(splitcommand(env['exe']['mserver5'][1]) + ['--dbpath=%s' % 
LogDBdir] + mserver5_opts, open(os.devnull, 'w'), open(os.devnull, 'w'), 
par['TIMEOUT'], os.path.join(LogDBdir, '.started'))
@@ -1351,6 +1351,7 @@ def PerformDir(env, testdir, testlist, a
         pSrvr = None
         try:
             for TST,COND in testlist:
+                test_progress += 1
                 if oneserver and (pSrvr is None or pSrvr.poll() is not None):
                     # restart server
                     inmem = single_in_memory
@@ -1393,7 +1394,7 @@ def PerformDir(env, testdir, testlist, a
                     tt, FtOut, FtErr, bodyline, reason = 
0,F_SKIP,F_SKIP,None,"as the global timeout has been reached"
                 else:
                     os.environ['TST'] = TST
-                    tt, FtOut, FtErr, bodyline, reason, links = RunTest(env, 
TST, COND, oktests, length, all_tests, pSrvr)
+                    tt, FtOut, FtErr, bodyline, reason, links = RunTest(env, 
TST, COND, oktests, length, all_tests, pSrvr, total_tests, test_progress)
                     alllinks.extend(links)
                 if tt:
                     t = "%7.3f" % tt
@@ -1483,10 +1484,10 @@ def PerformDir(env, testdir, testlist, a
             except:
                 pass
 
-        return td, elem, max(FdOut, FdErr, ssout, sserr), interrupted
+        return td, elem, max(FdOut, FdErr, ssout, sserr), interrupted, 
test_progress
     finally:
         del sys.path[0]
-### PerformDir(env, testdir, testlist) #
+### PerformDir(env, testdir, testlist, all_tests, total_tests, test_progress) #
 
 # this function is a slightly modified copy of the posixpath version
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to