fix: allow listing sessions without target

This commit is contained in:
gelei
2026-06-15 01:18:30 +08:00
parent 381902c58a
commit dca0019ca3
2 changed files with 32 additions and 4 deletions
+6 -4
View File
@@ -6,7 +6,7 @@ import asyncio
import sys
def parse_arguments() -> argparse.Namespace:
def parse_arguments(argv: list[str] | None = None) -> argparse.Namespace:
"""Parse command line arguments."""
parser = argparse.ArgumentParser(
prog="pentestgpt",
@@ -37,7 +37,6 @@ For more information: https://github.com/GreyDGL/pentestgpt
"-t",
"--target",
type=str,
required=True,
help="Target CTF challenge or machine (URL, IP address, domain, or file path)",
)
@@ -122,7 +121,10 @@ For more information: https://github.com/GreyDGL/pentestgpt
help="Disable anonymous telemetry data collection",
)
return parser.parse_args()
args = parser.parse_args(argv)
if not args.list_sessions and not args.target:
parser.error("the following arguments are required: -t/--target")
return args
def print_banner() -> None:
@@ -272,7 +274,7 @@ def main() -> None:
# Handle --list-sessions
if args.list_sessions:
list_sessions(args.target if hasattr(args, "target") else None)
list_sessions(args.target)
return
# Initialize telemetry (enabled by default, use --no-telemetry to disable)
+26
View File
@@ -0,0 +1,26 @@
"""Tests for the PentestGPT command-line parser."""
import pytest
from pentestgpt.interface.main import parse_arguments
def test_target_required_for_pipeline_runs():
with pytest.raises(SystemExit) as exc:
parse_arguments([])
assert exc.value.code == 2
def test_list_sessions_does_not_require_target():
args = parse_arguments(["--list-sessions"])
assert args.list_sessions is True
assert args.target is None
def test_list_sessions_can_filter_by_target():
args = parse_arguments(["--list-sessions", "--target", "example.com"])
assert args.list_sessions is True
assert args.target == "example.com"