Skip to content

Commit 28b2962

Browse files
committed
refactor: Add reason to BadSessionName
1 parent ef428d6 commit 28b2962

File tree

4 files changed

+19
-15
lines changed

4 files changed

+19
-15
lines changed

src/libtmux/common.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -453,15 +453,11 @@ def session_check_name(session_name: t.Optional[str]) -> None:
453453
Invalid session name.
454454
"""
455455
if session_name is None or len(session_name) == 0:
456-
raise exc.BadSessionName("tmux session names may not be empty.")
456+
raise exc.BadSessionName(reason="empty", session_name=session_name)
457457
elif "." in session_name:
458-
raise exc.BadSessionName(
459-
'tmux session name "%s" may not contain periods.', session_name
460-
)
458+
raise exc.BadSessionName(reason="contains periods", session_name=session_name)
461459
elif ":" in session_name:
462-
raise exc.BadSessionName(
463-
'tmux session name "%s" may not contain colons.', session_name
464-
)
460+
raise exc.BadSessionName(reason="contains colons", session_name=session_name)
465461

466462

467463
def handle_option_error(error: str) -> t.Type[exc.OptionError]:

src/libtmux/exc.py

+8
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ class BadSessionName(LibTmuxException):
3131

3232
"""Disallowed session name for tmux (empty, contains periods or colons)."""
3333

34+
def __init__(
35+
self, reason: str, session_name: t.Optional[str] = None, *args: object
36+
):
37+
msg = f"Bad session name: {reason}"
38+
if session_name is not None:
39+
msg += f" (session name: {session_name})"
40+
return super().__init__(msg)
41+
3442

3543
class OptionError(LibTmuxException):
3644

tests/legacy_api/test_common.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,10 @@ def test_tmux_cmd_unicode(session: Session) -> None:
184184
@pytest.mark.parametrize(
185185
"session_name,raises,exc_msg_regex",
186186
[
187-
("", True, "may not be empty"),
188-
(None, True, "may not be empty"),
189-
("my great session.", True, "may not contain periods"),
190-
("name: great session", True, "may not contain colons"),
187+
("", True, "empty"),
188+
(None, True, "empty"),
189+
("my great session.", True, "contains periods"),
190+
("name: great session", True, "contains colons"),
191191
("new great session", False, None),
192192
("ajf8a3fa83fads,,,a", False, None),
193193
],

tests/test_common.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,10 @@ class SessionCheckName(t.NamedTuple):
189189
@pytest.mark.parametrize(
190190
SessionCheckName._fields,
191191
[
192-
SessionCheckName("", True, "may not be empty"),
193-
SessionCheckName(None, True, "may not be empty"),
194-
SessionCheckName("my great session.", True, "may not contain periods"),
195-
SessionCheckName("name: great session", True, "may not contain colons"),
192+
SessionCheckName("", True, "empty"),
193+
SessionCheckName(None, True, "empty"),
194+
SessionCheckName("my great session.", True, "contains periods"),
195+
SessionCheckName("name: great session", True, "contains colons"),
196196
SessionCheckName("new great session", False, None),
197197
SessionCheckName("ajf8a3fa83fads,,,a", False, None),
198198
],

0 commit comments

Comments
 (0)