From bb5869fe2afcaf2a396443107dda8c4820fc9a0c Mon Sep 17 00:00:00 2001 From: Heinrich Kruger Date: Sat, 1 Oct 2022 15:51:27 +0100 Subject: [PATCH] Pass start_directory to new_session when building a session This fixes a bug introduced in 2a4714e76b3a85b3391b05413f36623bcb1493f9 (#809) whereby the `start_directory` session config was no longer passed to the `new_session` method when building a session. This resulted in the session working directory is not being set correctly, so new windows/panes created in the session, would not start in the expected directory. --- src/tmuxp/workspacebuilder.py | 3 ++- .../start_directory_session_path.yaml | 6 +++++ tests/test_workspacebuilder.py | 22 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/workspacebuilder/start_directory_session_path.yaml diff --git a/src/tmuxp/workspacebuilder.py b/src/tmuxp/workspacebuilder.py index 1913097a28a..ef0d7549cf2 100644 --- a/src/tmuxp/workspacebuilder.py +++ b/src/tmuxp/workspacebuilder.py @@ -214,7 +214,8 @@ def build(self, session=None, append=False): "start_directory" ] session = self.server.new_session( - session_name=self.sconf["session_name"] + session_name=self.sconf["session_name"], + **new_session_kwargs, ) assert self.sconf["session_name"] == session.name diff --git a/tests/fixtures/workspacebuilder/start_directory_session_path.yaml b/tests/fixtures/workspacebuilder/start_directory_session_path.yaml new file mode 100644 index 00000000000..5fd35b2f4ec --- /dev/null +++ b/tests/fixtures/workspacebuilder/start_directory_session_path.yaml @@ -0,0 +1,6 @@ +--- +session_name: sample_start_dir_session_path +start_directory: '/usr' +windows: + - panes: + - diff --git a/tests/test_workspacebuilder.py b/tests/test_workspacebuilder.py index d6c6c20dfbd..f4e0fcd654b 100644 --- a/tests/test_workspacebuilder.py +++ b/tests/test_workspacebuilder.py @@ -514,6 +514,28 @@ def f(): assert retry_until(f) +@pytest.mark.skipif( + has_lt_version("3.2a"), reason="needs format introduced in tmux >= 3.2a" +) +def test_start_directory_sets_session_path(server): + yaml_config = test_utils.read_config_file( + "workspacebuilder/start_directory_session_path.yaml" + ) + sconfig = kaptan.Kaptan(handler="yaml") + sconfig = sconfig.import_config(yaml_config).get() + sconfig = config.expand(sconfig) + sconfig = config.trickle(sconfig) + + builder = WorkspaceBuilder(sconf=sconfig, server=server) + builder.build() + + session = builder.session + expected = "{0}|/usr".format(session.id) + + cmd = server.cmd("list-sessions", "-F", "#{session_id}|#{session_path}") + assert expected in cmd.stdout + + def test_pane_order(session): """Pane ordering based on position in config and ``pane_index``.