From 1d0f30e936d2fabbbaa34c3904369252d54a56cc Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sat, 22 Jan 2022 05:07:28 -0700 Subject: [PATCH] patman: Update test_util to run doc tests At present this function does not run the doctests. Allow the caller to pass these modules in as strings. Update patman to use this. Signed-off-by: Simon Glass --- tools/dtoc/main.py | 2 +- tools/patman/main.py | 20 ++++---------------- tools/patman/test_util.py | 17 +++++++++++------ 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/tools/dtoc/main.py b/tools/dtoc/main.py index 6f9b526bd7..276cfadf5a 100755 --- a/tools/dtoc/main.py +++ b/tools/dtoc/main.py @@ -58,7 +58,7 @@ def run_tests(processes, args): test_util.RunTestSuites( result, debug=True, verbosity=1, test_preserve_dirs=False, processes=processes, test_name=test_name, toolpath=[], - test_class_list=[test_dtoc.TestDtoc,test_src_scan.TestSrcScan]) + class_and_module_list=[test_dtoc.TestDtoc,test_src_scan.TestSrcScan]) return test_util.ReportResult('binman', test_name, result) diff --git a/tools/patman/main.py b/tools/patman/main.py index e5be28e331..c01ae36e9f 100755 --- a/tools/patman/main.py +++ b/tools/patman/main.py @@ -134,23 +134,11 @@ if args.cmd == 'test': import doctest from patman import func_test - sys.argv = [sys.argv[0]] result = unittest.TestResult() - suite = unittest.TestSuite() - loader = unittest.TestLoader() - for module in (test_checkpatch.TestPatch, func_test.TestFunctional): - if args.testname: - try: - suite.addTests(loader.loadTestsFromName(args.testname, module)) - except AttributeError: - continue - else: - suite.addTests(loader.loadTestsFromTestCase(module)) - suite.run(result) - - for module in ['gitutil', 'settings', 'terminal']: - suite = doctest.DocTestSuite(module) - suite.run(result) + test_util.RunTestSuites( + result, False, False, False, None, None, None, + [test_checkpatch.TestPatch, func_test.TestFunctional, + 'gitutil', 'settings', 'terminal']) sys.exit(test_util.ReportResult('patman', args.testname, result)) diff --git a/tools/patman/test_util.py b/tools/patman/test_util.py index 4e261755dc..9654e7319c 100644 --- a/tools/patman/test_util.py +++ b/tools/patman/test_util.py @@ -4,6 +4,7 @@ # from contextlib import contextmanager +import doctest import glob import multiprocessing import os @@ -139,7 +140,7 @@ def ReportResult(toolname:str, test_name: str, result: unittest.TestResult): def RunTestSuites(result, debug, verbosity, test_preserve_dirs, processes, - test_name, toolpath, test_class_list): + test_name, toolpath, class_and_module_list): """Run a series of test suites and collect the results Args: @@ -154,11 +155,13 @@ def RunTestSuites(result, debug, verbosity, test_preserve_dirs, processes, processes: Number of processes to use to run tests (None=same as #CPUs) test_name: Name of test to run, or None for all toolpath: List of paths to use for tools - test_class_list: List of test classes to run + class_and_module_list: List of test classes (type class) and module + names (type str) to run """ - for module in []: - suite = doctest.DocTestSuite(module) - suite.run(result) + for module in class_and_module_list: + if isinstance(module, str) and (not test_name or test_name == module): + suite = doctest.DocTestSuite(module) + suite.run(result) sys.argv = [sys.argv[0]] if debug: @@ -171,7 +174,9 @@ def RunTestSuites(result, debug, verbosity, test_preserve_dirs, processes, suite = unittest.TestSuite() loader = unittest.TestLoader() - for module in test_class_list: + for module in class_and_module_list: + if isinstance(module, str): + continue # Test the test module about our arguments, if it is interested if hasattr(module, 'setup_test_args'): setup_test_args = getattr(module, 'setup_test_args') -- 2.39.5