diff options
author | theuni <theuni-nospam-@xbmc.org> | 2011-01-24 16:05:21 -0500 |
---|---|---|
committer | theuni <theuni-nospam-@xbmc.org> | 2011-01-24 16:05:21 -0500 |
commit | c51b1189e3d5353e842991f5859ddcea0f73e426 (patch) | |
tree | ef2cb8a6184699aa614f3655dca4ce661cdc108e /lib/jsoncpp/test/rununittests.py | |
parent | be61ebdc9e897fe40c6f371111724de79ddee8d5 (diff) |
Merged cptspiff's code-reshuffle branch.
Squashed commit due to build breakage during code-reshuffle history.
Conflicts:
xbmc/Util.cpp
xbmc/cdrip/CDDARipper.cpp
xbmc/filesystem/Directory.cpp
xbmc/filesystem/File.cpp
Diffstat (limited to 'lib/jsoncpp/test/rununittests.py')
-rw-r--r-- | lib/jsoncpp/test/rununittests.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/lib/jsoncpp/test/rununittests.py b/lib/jsoncpp/test/rununittests.py new file mode 100644 index 0000000000..366184cfb5 --- /dev/null +++ b/lib/jsoncpp/test/rununittests.py @@ -0,0 +1,73 @@ +import sys +import os +import os.path +import subprocess +from glob import glob +import optparse + +VALGRIND_CMD = 'valgrind --tool=memcheck --leak-check=yes --undef-value-errors=yes' + +class TestProxy(object): + def __init__( self, test_exe_path, use_valgrind=False ): + self.test_exe_path = os.path.normpath( os.path.abspath( test_exe_path ) ) + self.use_valgrind = use_valgrind + + def run( self, options ): + if self.use_valgrind: + cmd = VALGRIND_CMD.split() + else: + cmd = [] + cmd.extend( [self.test_exe_path, '--test-auto'] + options ) + process = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) + stdout = process.communicate()[0] + if process.returncode: + return False, stdout + return True, stdout + +def runAllTests( exe_path, use_valgrind=False ): + test_proxy = TestProxy( exe_path, use_valgrind=use_valgrind ) + status, test_names = test_proxy.run( ['--list-tests'] ) + if not status: + print >> sys.stderr, "Failed to obtain unit tests list:\n" + test_names + return 1 + test_names = [name.strip() for name in test_names.strip().split('\n')] + failures = [] + for name in test_names: + print 'TESTING %s:' % name, + succeed, result = test_proxy.run( ['--test', name] ) + if succeed: + print 'OK' + else: + failures.append( (name, result) ) + print 'FAILED' + failed_count = len(failures) + pass_count = len(test_names) - failed_count + if failed_count: + print + for name, result in failures: + print result + print '%d/%d tests passed (%d failure(s))' % ( + pass_count, len(test_names), failed_count) + return 1 + else: + print 'All %d tests passed' % len(test_names) + return 0 + +def main(): + from optparse import OptionParser + parser = OptionParser( usage="%prog [options] <path to test_lib_json.exe>" ) + parser.add_option("--valgrind", + action="store_true", dest="valgrind", default=False, + help="run all the tests using valgrind to detect memory leaks") + parser.enable_interspersed_args() + options, args = parser.parse_args() + + if len(args) != 1: + parser.error( 'Must provides at least path to test_lib_json executable.' ) + sys.exit( 1 ) + + exit_code = runAllTests( args[0], use_valgrind=options.valgrind ) + sys.exit( exit_code ) + +if __name__ == '__main__': + main() |