Skip to content

Commit 6ff0670

Browse files
committed
config: move extra_info handling from parse_args to error
This way it works for any error, which seems like better separation of concerns.
1 parent e86d689 commit 6ff0670

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

src/_pytest/config/argparsing.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -446,10 +446,12 @@ def __init__(
446446
def error(self, message: str) -> NoReturn:
447447
"""Transform argparse error message into UsageError."""
448448
msg = f"{self.prog}: error: {message}"
449-
450449
if self._parser._config_source_hint is not None:
451450
msg = f"{msg} ({self._parser._config_source_hint})"
452-
451+
if self.extra_info:
452+
msg += "\n" + "\n".join(
453+
f" {k}: {v}" for k, v in sorted(self.extra_info.items())
454+
)
453455
raise UsageError(self.format_usage() + msg)
454456

455457
# Type ignored because typeshed has a very complex type in the superclass.
@@ -462,10 +464,7 @@ def parse_args( # type: ignore
462464
parsed, unrecognized = self.parse_known_args(args, namespace)
463465
for arg in unrecognized:
464466
if arg.startswith("-"):
465-
lines = ["unrecognized arguments: " + " ".join(unrecognized)]
466-
for k, v in sorted(self.extra_info.items()):
467-
lines.append(f" {k}: {v}")
468-
self.error("\n".join(lines))
467+
self.error("unrecognized arguments: " + " ".join(unrecognized))
469468
getattr(parsed, FILE_OR_DIR).extend(unrecognized)
470469
return parsed
471470

0 commit comments

Comments
 (0)