It is easier for tests if the top-level control logic is all in one module. Create a new do_patman() function to handle this. Move the existing code into it.
Signed-off-by: Simon Glass <s...@chromium.org> --- tools/patman/__main__.py | 49 ++---------------------------------- tools/patman/control.py | 54 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 49 deletions(-) diff --git a/tools/patman/__main__.py b/tools/patman/__main__.py index 36f1c08507c..0d08a53cbab 100755 --- a/tools/patman/__main__.py +++ b/tools/patman/__main__.py @@ -6,15 +6,8 @@ """See README for more information""" -try: - from importlib import resources -except ImportError: - # for Python 3.6 - import importlib_resources as resources import os -import re import sys -import traceback # Allow 'from patman import xxx to work' # pylint: disable=C0413 @@ -24,9 +17,7 @@ sys.path.append(os.path.join(our_path, '..')) # Our modules from patman import cmdline from patman import control -from u_boot_pylib import terminal from u_boot_pylib import test_util -from u_boot_pylib import tools def run_patman(): @@ -54,44 +45,8 @@ def run_patman(): sys.exit(0 if result.wasSuccessful() else 1) # Process commits, produce patches files, check them, email them - elif args.cmd == 'send': - # Called from git with a patch filename as argument - # Printout a list of additional CC recipients for this patch - if args.cc_cmd: - re_line = re.compile(r'(\S*) (.*)') - with open(args.cc_cmd, 'r', encoding='utf-8') as inf: - for line in inf.readlines(): - match = re_line.match(line) - if match and match.group(1) == args.patchfiles[0]: - for cca in match.group(2).split('\0'): - cca = cca.strip() - if cca: - print(cca) - - elif args.full_help: - with resources.path('patman', 'README.rst') as readme: - tools.print_full_help(str(readme)) - else: - # If we are not processing tags, no need to warning about bad ones - if not args.process_tags: - args.ignore_bad_tags = True - control.send(args) - - # Check status of patches in patchwork - elif args.cmd == 'status': - ret_code = 0 - try: - control.patchwork_status(args.branch, args.count, args.start, args.end, - args.dest_branch, args.force, - args.show_comments, args.patchwork_url) - except Exception as exc: - terminal.tprint(f'patman: {type(exc).__name__}: {exc}', - colour=terminal.Color.RED) - if args.debug: - print() - traceback.print_exc() - ret_code = 1 - sys.exit(ret_code) + else: + control.do_patman(args) if __name__ == "__main__": diff --git a/tools/patman/control.py b/tools/patman/control.py index b8a45912058..990e07f8766 100644 --- a/tools/patman/control.py +++ b/tools/patman/control.py @@ -9,12 +9,21 @@ the features of patman. """ import os +import re import sys +import traceback + +try: + from importlib import resources +except ImportError: + # for Python 3.6 + import importlib_resources as resources -from patman import checkpatch -from patman import patchstream from u_boot_pylib import gitutil from u_boot_pylib import terminal +from u_boot_pylib import tools +from patman import checkpatch +from patman import patchstream def setup(): @@ -245,3 +254,44 @@ def patchwork_status(branch, count, start, end, dest_branch, force, from patman import status status.check_patchwork_status(series, found[0], branch, dest_branch, force, show_comments, url) + + +def do_patman(args): + if args.cmd == 'send': + # Called from git with a patch filename as argument + # Printout a list of additional CC recipients for this patch + if args.cc_cmd: + re_line = re.compile(r'(\S*) (.*)') + with open(args.cc_cmd, 'r', encoding='utf-8') as inf: + for line in inf.readlines(): + match = re_line.match(line) + if match and match.group(1) == args.patchfiles[0]: + for cca in match.group(2).split('\0'): + cca = cca.strip() + if cca: + print(cca) + + elif args.full_help: + with resources.path('patman', 'README.rst') as readme: + tools.print_full_help(str(readme)) + else: + # If we are not processing tags, no need to warning about bad ones + if not args.process_tags: + args.ignore_bad_tags = True + send(args) + + # Check status of patches in patchwork + elif args.cmd == 'status': + ret_code = 0 + try: + patchwork_status(args.branch, args.count, args.start, args.end, + args.dest_branch, args.force, args.show_comments, + args.patchwork_url) + except Exception as exc: + terminal.tprint(f'patman: {type(exc).__name__}: {exc}', + colour=terminal.Color.RED) + if args.debug: + print() + traceback.print_exc() + ret_code = 1 + sys.exit(ret_code) -- 2.43.0