Update to 2.0.0 tree from current Fremantle build
[opencv] / tests / swig_python / testall.py
diff --git a/tests/swig_python/testall.py b/tests/swig_python/testall.py
new file mode 100755 (executable)
index 0000000..8c20fef
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+
+# This script uses the unittest module to find all the tests in the 
+# same directory and run them.
+#
+# 2009-01-23, Roman Stanchak (rstanchak@gmail.com)
+#
+# 
+# For a test to be detected and run by this script, it must
+# 1. Use unittest
+# 2. define a suite() method that returns a unittest.TestSuite containing
+#    the tests to be run
+
+import cvtestutils
+import unittest
+import types
+import os
+import imp
+
+def suites( dirname ):
+    suite_list=[]
+
+    for fn in os.listdir( dirname ):
+        # tests must be named test_*.py or *_tests.py
+        if not ( fn.lower().endswith('.py') and 
+                 (fn.lower().startswith('test_') or fn.lower().endswith('_tests.py')) ):
+            continue
+
+        module_name = fn[0:-3]
+        fullpath = os.path.realpath( dirname + os.path.sep + fn )
+        test_module = None
+        try:
+            test_module = imp.load_source( module_name, fullpath )
+        except:
+            print "Error importing python code in '%s'" % fn
+        if test_module:
+            try:
+                suite_list.append( test_module.suite() )
+                print "Added tests from %s" % fn
+            except:
+                print "%s does not contain a suite() method, skipping" % fn
+    return unittest.TestSuite(suite_list)
+
+    
+def col2( c1, c2, w=72 ):
+    return "%s%s" % (c1, c2.rjust(w-len(c1)))
+
+if __name__ == "__main__":
+    print '----------------------------------------------------------------------'
+    print 'Searching for tests...'
+    print '----------------------------------------------------------------------'
+    suite = suites( os.path.dirname( os.path.realpath(__file__) ))
+    print '----------------------------------------------------------------------'
+    print 'Running tests...'
+    print '----------------------------------------------------------------------'
+    unittest.TextTestRunner(verbosity=2).run(suite)