Skip to content

Commit

Permalink
fix: -v debug wasn't working when at end of some commands (#2321)
Browse files Browse the repository at this point in the history
  • Loading branch information
antazoey authored Oct 15, 2024
1 parent b883aa2 commit 77ed224
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
6 changes: 5 additions & 1 deletion src/ape/cli/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,11 @@ def set_level(ctx, param, value):
if callback is not None:
value = callback(ctx, param, value)

cli_logger._load_from_sys_argv(default=value)
if cli_logger._did_parse_sys_argv:
# Changing mid-session somehow (tests?)
cli_logger.set_level(value)
else:
cli_logger._load_from_sys_argv(default=value)

level_names = [lvl.name for lvl in LogLevel]
names_str = f"{', '.join(level_names[:-1])}, or {level_names[-1]}"
Expand Down
2 changes: 1 addition & 1 deletion src/ape/logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ def _load_from_sys_argv(self, default: Optional[Union[str, int, LogLevel]] = Non
# Minus 2 because if `-v` is the last arg, it is not our verbosity `-v`.
num_args = len(sys.argv) - 2

for arg_i in range(num_args):
for arg_i in range(1, 1 + num_args):
if sys.argv[arg_i] == "-v" or sys.argv[arg_i] == "--verbosity":
try:
level = _get_level(sys.argv[arg_i + 1].upper())
Expand Down
9 changes: 6 additions & 3 deletions tests/functional/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,14 +428,17 @@ def cmd(choice):
assert "__expected_foo" in result.output


def test_verbosity_option(runner):
@pytest.mark.parametrize("name", ("-v", "--verbosity"))
def test_verbosity_option(runner, name):
logger._did_parse_sys_argv = False # Force re-parse

@click.command()
@verbosity_option()
def cmd():
click.echo(f"__expected_{logger.level}")

result = runner.invoke(cmd, ("--verbosity", logger.level))
assert f"__expected_{logger.level}" in result.output
result = runner.invoke(cmd, (name, "debug"))
assert "__expected_10" in result.output


@pytest.mark.parametrize(
Expand Down

0 comments on commit 77ed224

Please sign in to comment.