]> arthur.barton.de Git - bup.git/blobdiff - wvtest.py
Adjust rm-cmd and bup.rm for python 3 and enable test-rm
[bup.git] / wvtest.py
index 742534fe25b01030c1f58c8a02b06361126f496e..6a302d7bae697fa87be99c03f409d9869cfda9df 100755 (executable)
--- a/wvtest.py
+++ b/wvtest.py
@@ -4,6 +4,7 @@ bup_python="$(dirname "$0")/cmd/bup-python"
 exec "$bup_python" "$0" ${1+"$@"}
 """
 # end of bup preamble
+
 #
 # WvTest:
 #   Copyright (C)2007-2012 Versabanq Innovations Inc. and contributors.
@@ -11,6 +12,9 @@ exec "$bup_python" "$0" ${1+"$@"}
 #       See the included file named LICENSE for license information.
 #       You can get wvtest from: http://github.com/apenwarr/wvtest
 #
+
+from __future__ import absolute_import, print_function
+from os.path import relpath
 import atexit
 import inspect
 import os
@@ -60,8 +64,8 @@ if __name__ != '__main__':   # we're imported as a module
         filename = os.path.basename(filename)
         msg = re.sub(r'\s+', ' ', str(msg))
         sys.stderr.flush()
-        print '! %-70s %s' % ('%s:%-4d %s' % (filename, line, msg),
-                              code)
+        print('! %-70s %s' % ('%s:%-4d %s' % (filename, line, msg),
+                              code))
         sys.stdout.flush()
 
 
@@ -83,6 +87,14 @@ if __name__ != '__main__':   # we're imported as a module
             _result(msg, tb, 'FAILED')
         return cond
 
+    def wvcheck(cond, msg, tb = None):
+        if tb == None: tb = _caller_stack(2)
+        if cond:
+            _result(msg, tb, 'ok')
+        else:
+            _result(msg, tb, 'FAILED')
+        return cond
+
     _code_rx = re.compile(r'^\w+\((.*)\)(\s*#.*)?$')
     def _code():
         text = _caller_stack(2)[3]
@@ -162,7 +174,7 @@ if __name__ != '__main__':   # we're imported as a module
     def _check_unfinished():
         if _registered:
             for func in _registered:
-                print 'WARNING: not run: %r' % (func,)
+                print('WARNING: not run: %r' % (func,))
             WVFAIL('wvtest_main() not called')
         if _fails:
             sys.exit(1)
@@ -182,39 +194,17 @@ def _run_in_chdir(path, func, *args, **kwargs):
         sys.path = oldpath
 
 
-if sys.version_info >= (2,6,0):
-    _relpath = os.path.relpath;
-else:
-    # Implementation for Python 2.5, taken from CPython (tag v2.6,
-    # file Lib/posixpath.py, hg-commit 95fff5a6a276).  Update
-    # ./LICENSE When this code is eventually removed.
-    def _relpath(path, start=os.path.curdir):
-        if not path:
-            raise ValueError("no path specified")
-
-        start_list = os.path.abspath(start).split(os.path.sep)
-        path_list = os.path.abspath(path).split(os.path.sep)
-
-        # Work out how much of the filepath is shared by start and path.
-        i = len(os.path.commonprefix([start_list, path_list]))
-
-        rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:]
-        if not rel_list:
-            return curdir
-        return os.path.join(*rel_list)
-
-
 def _runtest(fname, f):
     mod = inspect.getmodule(f)
-    relpath = _relpath(mod.__file__, os.getcwd()).replace('.pyc', '.py')
-    print
-    print 'Testing "%s" in %s:' % (fname, relpath)
+    rpath = relpath(mod.__file__, os.getcwd()).replace('.pyc', '.py')
+    print()
+    print('Testing "%s" in %s:' % (fname, rpath))
     sys.stdout.flush()
     try:
         _run_in_chdir(os.path.split(mod.__file__)[0], f)
     except Exception as e:
-        print
-        print traceback.format_exc()
+        print()
+        print(traceback.format_exc())
         tb = sys.exc_info()[2]
         wvtest._result(e, traceback.extract_tb(tb)[1], 'EXCEPTION')
 
@@ -223,8 +213,8 @@ def _run_registered_tests():
     import wvtest as _wvtestmod
     while _wvtestmod._registered:
         t = _wvtestmod._registered.pop(0)
-        _runtest(t.func_name, t)
-        print
+        _runtest(t.__name__, t)
+        print()
 
 
 def wvtest_main(extra_testfiles=tuple()):
@@ -232,20 +222,20 @@ def wvtest_main(extra_testfiles=tuple()):
     _run_registered_tests()
     for modname in extra_testfiles:
         if not os.path.exists(modname):
-            print 'Skipping: %s' % modname
+            print('Skipping: %s' % modname)
             continue
         if modname.endswith('.py'):
             modname = modname[:-3]
-        print 'Importing: %s' % modname
+        print('Importing: %s' % modname)
         path, mod = os.path.split(os.path.abspath(modname))
         nicename = modname.replace(os.path.sep, '.')
         while nicename.startswith('.'):
             nicename = modname[1:]
         _run_in_chdir(path, __import__, nicename, None, None, [])
         _run_registered_tests()
-    print
-    print 'WvTest: %d tests, %d failures.' % (_wvtestmod._tests,
-                                              _wvtestmod._fails)
+    print()
+    print('WvTest: %d tests, %d failures.' % (_wvtestmod._tests,
+                                              _wvtestmod._fails))
 
 
 if __name__ == '__main__':