64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
from __future__ import print_function
|
|
from __future__ import absolute_import
|
|
|
|
from .testwrapper import trace_test, get_trace_path_cmd_tuple
|
|
|
|
|
|
import os
|
|
tracedir = os.path.dirname(__file__)
|
|
|
|
#cores = ['macoscore', 'ioscore', 'adbcore', 'hcicore']
|
|
|
|
|
|
|
|
|
|
import unittest
|
|
|
|
|
|
def generate_test_suite_from_traces():
|
|
|
|
def generate_test_from_file(core, tracefile):
|
|
tracepath, cmd = get_trace_path_cmd_tuple(core, tracefile)
|
|
|
|
def test():
|
|
print("Running test %s " % (tracefile[:-6]))
|
|
trace_test(core, tracepath, cmd)
|
|
|
|
# Rename the function to the tracefile name without .trace suffix
|
|
test.__name__ = tracefile[:-6]
|
|
if cmd:
|
|
return test
|
|
else:
|
|
return unittest.skip("No command specified in trace {}".format(tracepath))(test)
|
|
|
|
suite = unittest.TestSuite()
|
|
for core in os.listdir(tracedir):
|
|
if os.path.isdir(os.path.join(tracedir,core)):
|
|
core_suite = unittest.TestSuite()
|
|
for tracefile in os.listdir(os.path.join(tracedir, core)):
|
|
if tracefile.endswith(".trace"):
|
|
core_suite.addTest(
|
|
unittest.FunctionTestCase(generate_test_from_file(core, tracefile), description=tracefile))
|
|
suite.addTest(core_suite)
|
|
|
|
return suite
|
|
# test_all_traces()
|
|
|
|
def load_tests(loader, standard_tests, n):
|
|
"""
|
|
This method is called by test frameworks to supply a testsuite instead of the test framework collecting them itself.
|
|
This allows use to automatically generate a proper test for each trace in the subdirectory that has a command specified.
|
|
Those tests are then run by the framework in the usual way which integrates with IDEs
|
|
TODO: Document PyCharm Setup
|
|
"""
|
|
|
|
trace_suite = generate_test_suite_from_traces()
|
|
return trace_suite
|
|
|
|
if __name__ == '__main__':
|
|
suite = generate_test_suite_from_traces()
|
|
unittest.TextTestRunner().run(suite)
|
|
|
|
|
|
|