https://github.com/neithere/argh/issues/239 --- argh-0.31.3/tests/base.py.orig +++ argh-0.31.3/tests/base.py @@ -4,8 +4,6 @@ """ import io -import os -import sys from collections import namedtuple from argh import ArghParser @@ -72,8 +70,3 @@ raise AssertionError("Did not exit") return result.exit_code return result - - -def get_usage_string(definitions="{cmd} ..."): - prog = os.path.basename(sys.argv[0]) - return "usage: " + prog + " [-h] " + definitions + "\n\n" --- argh-0.31.3/tests/test_integration.py.orig +++ argh-0.31.3/tests/test_integration.py @@ -17,7 +17,7 @@ from argh.utils import unindent from .base import CmdResult as R -from .base import DebugArghParser, get_usage_string, run +from .base import DebugArghParser, run if sys.version_info < (3, 10): HELP_OPTIONS_LABEL = "optional arguments" @@ -796,11 +796,17 @@ parser = DebugArghParser() parser.set_default_command(func) - assert unindent(func.__doc__) in parser.format_help() + docstring = func.__doc__ + assert docstring + assert unindent(docstring) in parser.format_help() def test_prog(capsys: pytest.CaptureFixture[str]): - "Program name propagates from sys.argv[0]" + """ + Program name propagates to the usage string. + It's not just sys.argv[0], the logic is a bit more complicated in argparse, + so we just reuse whatever it has produced. + """ def cmd(*, foo=1): return foo @@ -808,10 +814,12 @@ parser = DebugArghParser() parser.add_commands([cmd]) - usage = get_usage_string() + usage = f"usage: {parser.prog} [-h]" - assert run(parser, "-h", exit=True) == 0 + exit_code = run(parser, "-h", exit=True) captured = capsys.readouterr() + + assert exit_code == 0 assert captured.out.startswith(usage) @@ -822,8 +830,6 @@ parser = DebugArghParser() parser.set_default_command(cmd) - get_usage_string("[-f FOO]") - assert run(parser, "--foo 1") == R(out="1\n", err="") assert run(parser, "--bar 1", exit=True) == "unrecognized arguments: --bar 1" assert run(parser, "--bar 1", exit=False, kwargs={"skip_unknown_args": True}) == R(