diff --git a/pqcli/__main__.py b/pqcli/__main__.py index e5d7139..02b1d05 100644 --- a/pqcli/__main__.py +++ b/pqcli/__main__.py @@ -112,7 +112,7 @@ def list_players(roster: Roster, file: TextIO | None = None) -> None: def bootstrap_first_run( roster: Roster, args: argparse.Namespace, data: GameData ) -> None: - if roster.players or args.list_saves or args.load_save: + if roster.players or args.list_saves or args.load_save is not None: return print("No saved characters found. Starting first-run character creation.") @@ -193,13 +193,12 @@ def main() -> None: exit(0) player: Player | None = None - if args.load_save: - try: - player = list(roster.players)[args.load_save - 1] - except IndexError: + if args.load_save is not None: + if not 1 <= args.load_save <= len(roster.players): print("Invalid player. Available players:", file=sys.stderr) list_players(roster, file=sys.stderr) exit(1) + player = roster.players[args.load_save - 1] bootstrap_first_run(roster, args, data) diff --git a/tests/test_main.py b/tests/test_main.py index 11b74b9..de6aae2 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -90,19 +90,12 @@ def test_list_saves_when_there_are_none( assert not config.exists() -BAD_LOAD_SAVE = "--load-save 0 and negative numbers are not rejected" - - @pytest.mark.parametrize( "num", [ "3", - pytest.param( - "0", marks=pytest.mark.xfail(strict=True, reason=BAD_LOAD_SAVE) - ), - pytest.param( - "-1", marks=pytest.mark.xfail(strict=True, reason=BAD_LOAD_SAVE) - ), + "0", + "-1", ], ) def test_load_save_rejects_unknown_character( @@ -113,7 +106,6 @@ def test_load_save_rejects_unknown_character( num: str, ) -> None: write_roster(config, hero("Ann"), hero("Bob")) - # 0 falls through to the menu and -1 plays Bob; neither should feed(monkeypatch, ["7"]) monkeypatch.setattr(BasicUserInterface, "play", lambda self, p: None) assert run("--basic", "--load-save", num) == 1