Skip to content

Commit 380efd8

Browse files
authored
fix(Server.session_name): Handle empty session names better (#401)
Fixes #399, follow up to #400
2 parents 31d95a3 + 88beef4 commit 380efd8

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

libtmux/server.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,20 @@ def new_session(
534534
Raises
535535
------
536536
:exc:`exc.BadSessionName`
537+
538+
Examples
539+
--------
540+
Sessions can be created without a session name (0.14.2+):
541+
>>> server.new_session()
542+
Session($2 2)
543+
544+
Creating them in succession will enumerate IDs (via tmux):
545+
>>> server.new_session()
546+
Session($3 3)
547+
548+
With a `session_name`:
549+
>>> server.new_session(session_name='my session')
550+
Session($4 my session)
537551
"""
538552
if session_name is not None:
539553
session_check_name(session_name)
@@ -558,11 +572,13 @@ def new_session(
558572
del os.environ["TMUX"]
559573

560574
tmux_args: t.Tuple[t.Union[str, int], ...] = (
561-
"-s%s" % session_name,
562575
"-P",
563576
"-F%s" % formats.FORMAT_SEPARATOR.join(tmux_formats), # output
564577
)
565578

579+
if session_name is not None:
580+
tmux_args += (f"-s{session_name}",)
581+
566582
if not attach:
567583
tmux_args += ("-d",)
568584

tests/test_server.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,19 @@ def test_new_session(server: Server) -> None:
9191

9292
def test_new_session_no_name(server: Server) -> None:
9393
"""Server.new_session works with no name"""
94-
mysession = server.new_session()
95-
session_name = mysession.get("session_name")
96-
assert session_name is not None
97-
assert server.has_session(session_name)
94+
first_session = server.new_session()
95+
first_session_name = first_session.get("session_name")
96+
assert first_session_name is not None
97+
assert server.has_session(first_session_name)
98+
99+
expected_session_name = str(int(first_session_name) + 1)
100+
101+
# When a new session is created, it should enumerate
102+
second_session = server.new_session()
103+
second_session_name = second_session.get("session_name")
104+
assert expected_session_name == second_session_name
105+
assert second_session_name is not None
106+
assert server.has_session(second_session_name)
98107

99108

100109
def test_new_session_shell(server: Server) -> None:

0 commit comments

Comments
 (0)