diff options
Diffstat (limited to 'mpm/python/tests/run_unit_tests.py')
-rwxr-xr-x | mpm/python/tests/run_unit_tests.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/mpm/python/tests/run_unit_tests.py b/mpm/python/tests/run_unit_tests.py new file mode 100755 index 000000000..d7c288aaa --- /dev/null +++ b/mpm/python/tests/run_unit_tests.py @@ -0,0 +1,64 @@ +# +# Copyright 2019 Ettus Research, a National Instruments Brand +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +""" +USRP MPM Python Unit testing framework +""" + +import unittest +import sys +from sys_utils_tests import TestNet + +TESTS = { + '__all__': {TestNet}, + 'n3xx': set(), +} + +def get_test_suite(device_name=''): + """ + Gets a test suite (collection of test cases) which is relevant for + the specified device. + """ + # A collection of test suites, generated by test loaders, which will + # be later combined + test_suite_list = [] + test_loader = unittest.TestLoader() + + # Combine generic and device specific tests + test_cases = TESTS.get('__all__') | TESTS.get(device_name, set()) + for case in test_cases: + new_suite = test_loader.loadTestsFromTestCase(case) + for test in new_suite: + # Set up test case class for a specific device. + # Each test uses a different test case instance. + if (hasattr(test, 'set_device_name')) and (device_name != ''): + test.set_device_name(device_name) + test_suite_list.append(new_suite) + + # Individual test suites are combined into a master test suite + test_suite = unittest.TestSuite(test_suite_list) + return test_suite + +def run_tests(device_name=''): + """ + Executes the unit tests specified by the test suite. + This should be called from CMake. + """ + test_result = unittest.TestResult() + test_runner = unittest.TextTestRunner(verbosity=2) + test_result = test_runner.run(get_test_suite(device_name)) + return test_result + +def main(): + if len(sys.argv) >= 2: + mpm_device_name = sys.argv[1] + else: + mpm_device_name = '' + + if not run_tests(mpm_device_name).wasSuccessful(): + sys.exit(-1) + +if __name__ == "__main__": + main() |