# SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB) # Copyright (c) 2019 Mellanox Technologies, Inc . All rights reserved. See COPYING file import importlib import os from args_parser import parser # Load every test as a module in the system so that unittest's loader can find it def _load_tests(): res = [] for fn in sorted(os.listdir(os.path.dirname(__file__))): if fn.endswith(".py") and fn.startswith("test_"): m = importlib.import_module("." + os.path.basename(fn)[:-3], __name__) res.append(m) return res __test_modules__ = _load_tests() # unittest -v prints names like 'tests.test_foo', but it always starts # searching from the tests module, adding the name 'tests.test' lets the user # specify the same test name from logging on the command line to trivially run # a single test. tests = importlib.import_module(".", __name__) def _show_tests_and_exit(loader, standard_tests, pattern): """ Prints the full test names that are loaded with the current modules via loadTestsFromModule protocol, without modifying standard_tests. """ for mod in __test_modules__: for test in loader.loadTestsFromModule(mod, pattern=pattern): for test_case in test: print(test_case.id()) return standard_tests def load_tests(loader, standard_tests, pattern): """Implement the loadTestsFromModule protocol""" if parser.args['list_tests']: return _show_tests_and_exit(loader, standard_tests, pattern) for mod in __test_modules__: standard_tests.addTests(loader.loadTestsFromModule(mod, pattern=pattern)) return standard_tests