From c178f9f680a11ca18155e5f7d35a36ab78f736ac Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Wed, 17 Aug 2022 07:38:47 +0200 Subject: [PATCH 1/3] fix(Server.session_name): Handle empty session names better Avoid passing -s session_name when no session_name passed --- libtmux/server.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libtmux/server.py b/libtmux/server.py index e08cc3927..0ac53455e 100644 --- a/libtmux/server.py +++ b/libtmux/server.py @@ -558,11 +558,13 @@ def new_session( del os.environ["TMUX"] tmux_args: t.Tuple[t.Union[str, int], ...] = ( - "-s%s" % session_name, "-P", "-F%s" % formats.FORMAT_SEPARATOR.join(tmux_formats), # output ) + if session_name is not None: + tmux_args += (f"-s{session_name}",) + if not attach: tmux_args += ("-d",) From b099e60bf645d17b5f9e2ca543dceefa6f83b6de Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Wed, 17 Aug 2022 07:43:10 +0200 Subject: [PATCH 2/3] test(server.new_session): Test that server names enumerate --- tests/test_server.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tests/test_server.py b/tests/test_server.py index bd73a171e..782150086 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -91,10 +91,19 @@ def test_new_session(server: Server) -> None: def test_new_session_no_name(server: Server) -> None: """Server.new_session works with no name""" - mysession = server.new_session() - session_name = mysession.get("session_name") - assert session_name is not None - assert server.has_session(session_name) + first_session = server.new_session() + first_session_name = first_session.get("session_name") + assert first_session_name is not None + assert server.has_session(first_session_name) + + expected_session_name = str(int(first_session_name) + 1) + + # When a new session is created, it should enumerate + second_session = server.new_session() + second_session_name = second_session.get("session_name") + assert expected_session_name == second_session_name + assert second_session_name is not None + assert server.has_session(second_session_name) def test_new_session_shell(server: Server) -> None: From 88beef4f7a9743eeeef11d4b7ef8ebc847172a3e Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Wed, 17 Aug 2022 07:46:52 +0200 Subject: [PATCH 3/3] tests(Server.new_session): doctests --- libtmux/server.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libtmux/server.py b/libtmux/server.py index 0ac53455e..8561a0f39 100644 --- a/libtmux/server.py +++ b/libtmux/server.py @@ -534,6 +534,20 @@ def new_session( Raises ------ :exc:`exc.BadSessionName` + + Examples + -------- + Sessions can be created without a session name (0.14.2+): + >>> server.new_session() + Session($2 2) + + Creating them in succession will enumerate IDs (via tmux): + >>> server.new_session() + Session($3 3) + + With a `session_name`: + >>> server.new_session(session_name='my session') + Session($4 my session) """ if session_name is not None: session_check_name(session_name)