57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/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)
 |