uhd/host/tests/devtest/python_api_test.py
Martin Braun 6db281792b devtest: Don't skip Python API tests if Python API is enabled
One of the devtests (the python_api_test) gets skipped without failures
if the uhd module can't be loaded. However, this can mask errors if the
uhd module can't be loaded because it's broken. This change will verify
if the uhd module should have been loaded, and throw an error if that's
the case.
2020-06-10 12:46:33 -05:00

61 lines
2 KiB
Python

#!/usr/bin/env python3
#
# Copyright 2018 Ettus Research, a National Instruments Company
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
""" Test Python API """
import os
from uhd_test_base import shell_application
from uhd_test_base import uhd_test_case
try:
import uhd
except ImportError:
uhd = None
class uhd_python_api_test(uhd_test_case):
""" Run multi_usrp_test """
def test_api(self):
"""
Run test and report results.
"""
if uhd is None:
print("UHD module not found -- checking for Python API")
config_info_app = shell_application('uhd_config_info')
config_info_app.run(['--enabled-components'])
if "Python API" in config_info_app.stdout:
raise RuntimeError("Python API enabled, but cannot load uhd module!")
print("Skipping test, Python API not installed.")
self.report_result("python_api_tester", 'status', 'Skipped')
return
devtest_src_dir = os.getenv('_UHD_DEVTEST_SRC_DIR', '')
multi_usrp_test_path = \
os.path.join(devtest_src_dir, 'multi_usrp_test.py')
args = [
self.create_addr_args_str(),
]
app = shell_application(multi_usrp_test_path)
app.run(args)
run_results = {
'return_code': app.returncode,
'passed': False
}
run_results['passed'] = all([
app.returncode == 0,
])
self.log.info('STDERR Output:')
self.log.info(str(app.stderr))
for key in sorted(run_results):
self.log.info('%s = %s', str(key), str(run_results[key]))
self.report_result(
"python_api_tester",
key, run_results[key]
)
if 'passed' in run_results:
self.report_result(
"python_api_tester",
'status',
'Passed' if run_results['passed'] else 'Failed',
)