diff --git a/setup.cfg b/setup.cfg index 91d6b136b49..84854c63997 100644 --- a/setup.cfg +++ b/setup.cfg @@ -41,7 +41,9 @@ ignore = E111, W503 [tool:pytest] -addopts = --reruns=5 +addopts = --reruns=0 +filterwarnings = + ignore:distutils Version classes are deprecated. Use packaging.version instead. [isort] combine_as_imports= true diff --git a/tests/fixtures/_util.py b/tests/fixtures/_util.py index 67d2d05e225..b0c01c1f932 100644 --- a/tests/fixtures/_util.py +++ b/tests/fixtures/_util.py @@ -1,9 +1,15 @@ -import os +import pathlib +FIXTURE_PATH = pathlib.Path(__file__).parent -def curjoin(_file): # return filepath relative to __file__ (this file) - return os.path.join(os.path.dirname(__file__), _file) +def load_fixture(_file): # return fixture data, relative to __file__ + return open(FIXTURE_PATH / _file).read() -def loadfixture(_file): # return fixture data, relative to __file__ - return open(curjoin(_file)).read() + +def write_config( + config_path: pathlib.Path, filename: str, content: str +) -> pathlib.Path: + config = config_path / filename + config.write_text(content, encoding="utf-8") + return config diff --git a/tests/fixtures/config/expand2.py b/tests/fixtures/config/expand2.py index 2673685b616..af00ec92535 100644 --- a/tests/fixtures/config/expand2.py +++ b/tests/fixtures/config/expand2.py @@ -1,8 +1,8 @@ import os -from .._util import loadfixture +from .._util import load_fixture -unexpanded_yaml = loadfixture("config/expand2-unexpanded.yaml") -expanded_yaml = loadfixture("config/expand2-expanded.yaml").format( +unexpanded_yaml = load_fixture("config/expand2-unexpanded.yaml") +expanded_yaml = load_fixture("config/expand2-expanded.yaml").format( HOME=os.path.expanduser("~") ) diff --git a/tests/fixtures/config/shell_command_before_session.py b/tests/fixtures/config/shell_command_before_session.py index ef1e89e60ca..d7429097ad0 100644 --- a/tests/fixtures/config/shell_command_before_session.py +++ b/tests/fixtures/config/shell_command_before_session.py @@ -1,4 +1,4 @@ -from .._util import loadfixture +from .._util import load_fixture -before = loadfixture("config/shell_command_before_session.yaml") -expected = loadfixture("config/shell_command_before_session-expected.yaml") +before = load_fixture("config/shell_command_before_session.yaml") +expected = load_fixture("config/shell_command_before_session-expected.yaml") diff --git a/tests/fixtures/config_teamocil/layouts.py b/tests/fixtures/config_teamocil/layouts.py index 686f8311c90..aaa7de25b27 100644 --- a/tests/fixtures/config_teamocil/layouts.py +++ b/tests/fixtures/config_teamocil/layouts.py @@ -1,6 +1,6 @@ -from .._util import loadfixture +from .._util import load_fixture -teamocil_yaml = loadfixture("config_teamocil/layouts.yaml") +teamocil_yaml = load_fixture("config_teamocil/layouts.yaml") teamocil_dict = { "two-windows": { diff --git a/tests/fixtures/config_teamocil/test1.py b/tests/fixtures/config_teamocil/test1.py index 9633095710b..4bbf3fe6871 100644 --- a/tests/fixtures/config_teamocil/test1.py +++ b/tests/fixtures/config_teamocil/test1.py @@ -1,6 +1,6 @@ -from .._util import loadfixture +from .._util import load_fixture -teamocil_yaml = loadfixture("config_teamocil/test1.yaml") +teamocil_yaml = load_fixture("config_teamocil/test1.yaml") teamocil_conf = { "windows": [ { diff --git a/tests/fixtures/config_teamocil/test2.py b/tests/fixtures/config_teamocil/test2.py index e9a0f69b6c1..bc78e1e0f8b 100644 --- a/tests/fixtures/config_teamocil/test2.py +++ b/tests/fixtures/config_teamocil/test2.py @@ -1,6 +1,6 @@ -from .._util import loadfixture +from .._util import load_fixture -teamocil_yaml = loadfixture("config_teamocil/test2.yaml") +teamocil_yaml = load_fixture("config_teamocil/test2.yaml") teamocil_dict = { "windows": [ { diff --git a/tests/fixtures/config_teamocil/test3.py b/tests/fixtures/config_teamocil/test3.py index 0bc92980f24..7e33fcafc89 100644 --- a/tests/fixtures/config_teamocil/test3.py +++ b/tests/fixtures/config_teamocil/test3.py @@ -1,6 +1,6 @@ -from .._util import loadfixture +from .._util import load_fixture -teamocil_yaml = loadfixture("config_teamocil/test3.yaml") +teamocil_yaml = load_fixture("config_teamocil/test3.yaml") teamocil_dict = { "windows": [ diff --git a/tests/fixtures/config_teamocil/test4.py b/tests/fixtures/config_teamocil/test4.py index 5827bfcabdf..b734e4b4cac 100644 --- a/tests/fixtures/config_teamocil/test4.py +++ b/tests/fixtures/config_teamocil/test4.py @@ -1,6 +1,6 @@ -from .._util import loadfixture +from .._util import load_fixture -teamocil_yaml = loadfixture("config_teamocil/test4.yaml") +teamocil_yaml = load_fixture("config_teamocil/test4.yaml") teamocil_dict = { "windows": [ diff --git a/tests/fixtures/config_tmuxinator/test1.py b/tests/fixtures/config_tmuxinator/test1.py index 138671942ef..34295c974d5 100644 --- a/tests/fixtures/config_tmuxinator/test1.py +++ b/tests/fixtures/config_tmuxinator/test1.py @@ -1,6 +1,6 @@ -from .._util import loadfixture +from .._util import load_fixture -tmuxinator_yaml = loadfixture("config_tmuxinator/test1.yaml") +tmuxinator_yaml = load_fixture("config_tmuxinator/test1.yaml") tmuxinator_dict = { "windows": [ {"editor": {"layout": "main-vertical", "panes": ["vim", "guard"]}}, diff --git a/tests/fixtures/config_tmuxinator/test2.py b/tests/fixtures/config_tmuxinator/test2.py index 23273bf7ddf..d1c97612b08 100644 --- a/tests/fixtures/config_tmuxinator/test2.py +++ b/tests/fixtures/config_tmuxinator/test2.py @@ -1,6 +1,6 @@ -from .._util import loadfixture +from .._util import load_fixture -tmuxinator_yaml = loadfixture("config_tmuxinator/test2.yaml") +tmuxinator_yaml = load_fixture("config_tmuxinator/test2.yaml") tmuxinator_dict = { "project_name": "sample", diff --git a/tests/fixtures/config_tmuxinator/test3.py b/tests/fixtures/config_tmuxinator/test3.py index df2353f5c01..f4f36370768 100644 --- a/tests/fixtures/config_tmuxinator/test3.py +++ b/tests/fixtures/config_tmuxinator/test3.py @@ -1,6 +1,6 @@ -from .._util import loadfixture +from .._util import load_fixture -tmuxinator_yaml = loadfixture("config_tmuxinator/test3.yaml") +tmuxinator_yaml = load_fixture("config_tmuxinator/test3.yaml") tmuxinator_dict = { "name": "sample", diff --git a/tests/test_cli.py b/tests/test_cli.py index b812d15a746..1412a699de1 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -28,7 +28,7 @@ ) from tmuxp.workspacebuilder import WorkspaceBuilder -from .fixtures._util import curjoin, loadfixture +from .fixtures._util import FIXTURE_PATH, load_fixture def test_creates_config_dir_not_exists(tmp_path: pathlib.Path): @@ -305,7 +305,7 @@ def test_load_workspace(server, monkeypatch): # a tmux session by the developer himself, delete the TMUX variable # temporarily. monkeypatch.delenv("TMUX", raising=False) - session_file = curjoin("workspacebuilder/two_pane.yaml") + session_file = FIXTURE_PATH / "workspacebuilder" / "two_pane.yaml" # open it detached session = load_workspace( @@ -321,7 +321,7 @@ def test_load_workspace_named_session(server, monkeypatch): # a tmux session by the developer himself, delete the TMUX variable # temporarily. monkeypatch.delenv("TMUX", raising=False) - session_file = curjoin("workspacebuilder/two_pane.yaml") + session_file = FIXTURE_PATH / "workspacebuilder" / "two_pane.yaml" # open it detached session = load_workspace( @@ -342,7 +342,7 @@ def test_load_workspace_name_match_regression_252( tmp_path: pathlib.Path, server, monkeypatch ): monkeypatch.delenv("TMUX", raising=False) - session_file = curjoin("workspacebuilder/two_pane.yaml") + session_file = FIXTURE_PATH / "workspacebuilder" / "two_pane.yaml" # open it detached session = load_workspace( @@ -407,8 +407,8 @@ def test_load_symlinked_workspace(server, tmp_path, monkeypatch): def test_regression_00132_session_name_with_dots( tmp_path: pathlib.Path, server, session ): - yaml_config = curjoin("workspacebuilder/regression_00132_dots.yaml") - cli_args = [yaml_config] + yaml_config = FIXTURE_PATH / "workspacebuilder" / "regression_00132_dots.yaml" + cli_args = [str(yaml_config)] inputs = [] runner = CliRunner() result = runner.invoke( @@ -861,7 +861,7 @@ def test_help(cli_args, monkeypatch): ], ) def test_import_teamocil(cli_args, inputs, tmp_path, monkeypatch): - teamocil_config = loadfixture("config_teamocil/test4.yaml") + teamocil_config = load_fixture("config_teamocil/test4.yaml") teamocil_path = tmp_path / ".teamocil" teamocil_path.mkdir() @@ -900,7 +900,7 @@ def test_import_teamocil(cli_args, inputs, tmp_path, monkeypatch): ], ) def test_import_tmuxinator(cli_args, inputs, tmp_path, monkeypatch): - tmuxinator_config = loadfixture("config_tmuxinator/test3.yaml") + tmuxinator_config = load_fixture("config_tmuxinator/test3.yaml") tmuxinator_path = tmp_path / ".tmuxinator" tmuxinator_path.mkdir() @@ -1110,7 +1110,7 @@ def test_ls_cli(monkeypatch: pytest.MonkeyPatch, tmp_path: pathlib.Path): def test_load_plugins(monkeypatch_plugin_test_packages): from tmuxp_test_plugin_bwb.plugin import PluginBeforeWorkspaceBuilder - plugins_config = loadfixture("workspacebuilder/plugin_bwb.yaml") + plugins_config = load_fixture("workspacebuilder/plugin_bwb.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(plugins_config).get() @@ -1181,7 +1181,7 @@ def test_plugin_system_before_script( # a tmux session by the developer himself, delete the TMUX variable # temporarily. monkeypatch.delenv("TMUX", raising=False) - session_file = curjoin("workspacebuilder/plugin_bs.yaml") + session_file = FIXTURE_PATH / "workspacebuilder" / "plugin_bs.yaml" # open it detached session = load_workspace( @@ -1193,7 +1193,7 @@ def test_plugin_system_before_script( def test_reattach_plugins(monkeypatch_plugin_test_packages, server): - config_plugins = loadfixture("workspacebuilder/plugin_r.yaml") + config_plugins = load_fixture("workspacebuilder/plugin_r.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(config_plugins).get() @@ -1224,7 +1224,7 @@ def test_load_attached(server, monkeypatch): monkeypatch.setattr("libtmux.session.Session.attach_session", attach_session_mock) - yaml_config = loadfixture("workspacebuilder/two_pane.yaml") + yaml_config = load_fixture("workspacebuilder/two_pane.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -1244,7 +1244,7 @@ def test_load_attached_detached(server, monkeypatch): monkeypatch.setattr("libtmux.session.Session.attach_session", attach_session_mock) - yaml_config = loadfixture("workspacebuilder/two_pane.yaml") + yaml_config = load_fixture("workspacebuilder/two_pane.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -1264,7 +1264,7 @@ def test_load_attached_within_tmux(server, monkeypatch): monkeypatch.setattr("libtmux.session.Session.switch_client", switch_client_mock) - yaml_config = loadfixture("workspacebuilder/two_pane.yaml") + yaml_config = load_fixture("workspacebuilder/two_pane.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -1284,7 +1284,7 @@ def test_load_attached_within_tmux_detached(server, monkeypatch): monkeypatch.setattr("libtmux.session.Session.switch_client", switch_client_mock) - yaml_config = loadfixture("workspacebuilder/two_pane.yaml") + yaml_config = load_fixture("workspacebuilder/two_pane.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -1296,7 +1296,7 @@ def test_load_attached_within_tmux_detached(server, monkeypatch): def test_load_append_windows_to_current_session(server, monkeypatch): - yaml_config = loadfixture("workspacebuilder/two_pane.yaml") + yaml_config = load_fixture("workspacebuilder/two_pane.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() diff --git a/tests/test_workspacebuilder.py b/tests/test_workspacebuilder.py index e1f66d85b98..c5771a6024a 100644 --- a/tests/test_workspacebuilder.py +++ b/tests/test_workspacebuilder.py @@ -1,11 +1,14 @@ """Test for tmuxp workspacebuilder.""" import os import pathlib +import textwrap +import time import pytest import kaptan +import libtmux from libtmux import Window from libtmux.common import has_gte_version from libtmux.test import retry, temp_session @@ -14,11 +17,11 @@ from tmuxp.workspacebuilder import WorkspaceBuilder from . import example_dir, fixtures_dir -from .fixtures._util import loadfixture +from .fixtures._util import load_fixture def test_split_windows(session): - yaml_config = loadfixture("workspacebuilder/two_pane.yaml") + yaml_config = load_fixture("workspacebuilder/two_pane.yaml") s = session sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -39,7 +42,7 @@ def test_split_windows(session): def test_split_windows_three_pane(session): - yaml_config = loadfixture("workspacebuilder/three_pane.yaml") + yaml_config = load_fixture("workspacebuilder/three_pane.yaml") s = session sconfig = kaptan.Kaptan(handler="yaml") @@ -63,7 +66,7 @@ def test_split_windows_three_pane(session): def test_focus_pane_index(session): - yaml_config = loadfixture("workspacebuilder/focus_and_pane.yaml") + yaml_config = load_fixture("workspacebuilder/focus_and_pane.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -133,7 +136,7 @@ def test_focus_pane_index(session): """.strip() ) def test_suppress_history(session): - yaml_config = loadfixture("workspacebuilder/suppress_history.yaml") + yaml_config = load_fixture("workspacebuilder/suppress_history.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() sconfig = config.expand(sconfig) @@ -187,7 +190,7 @@ def assertIsMissing(cmd, hist): def test_session_options(session): - yaml_config = loadfixture("workspacebuilder/session_options.yaml") + yaml_config = load_fixture("workspacebuilder/session_options.yaml") s = session sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -201,7 +204,7 @@ def test_session_options(session): def test_global_options(session): - yaml_config = loadfixture("workspacebuilder/global_options.yaml") + yaml_config = load_fixture("workspacebuilder/global_options.yaml") s = session sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -222,7 +225,7 @@ def test_global_session_env_options(session, monkeypatch): main_pane_height = 8 monkeypatch.setenv("MAIN_PANE_HEIGHT", str(main_pane_height)) - yaml_config = loadfixture("workspacebuilder/env_var_options.yaml") + yaml_config = load_fixture("workspacebuilder/env_var_options.yaml") s = session sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -237,7 +240,7 @@ def test_global_session_env_options(session, monkeypatch): def test_window_options(session): - yaml_config = loadfixture("workspacebuilder/window_options.yaml") + yaml_config = load_fixture("workspacebuilder/window_options.yaml") s = session sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -267,7 +270,7 @@ def test_window_options(session): @pytest.mark.flaky(reruns=5) def test_window_options_after(session): - yaml_config = loadfixture("workspacebuilder/window_options_after.yaml") + yaml_config = load_fixture("workspacebuilder/window_options_after.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() sconfig = config.expand(sconfig) @@ -312,7 +315,7 @@ def assert_last_line(p, s): def test_window_shell(session): - yaml_config = loadfixture("workspacebuilder/window_shell.yaml") + yaml_config = load_fixture("workspacebuilder/window_shell.yaml") s = session sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -333,7 +336,7 @@ def test_window_shell(session): def test_environment_variables(session): - yaml_config = loadfixture("workspacebuilder/environment_vars.yaml") + yaml_config = load_fixture("workspacebuilder/environment_vars.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() sconfig = config.expand(sconfig) @@ -347,7 +350,7 @@ def test_environment_variables(session): def test_automatic_rename_option(session): """With option automatic-rename: on.""" - yaml_config = loadfixture("workspacebuilder/window_automatic_rename.yaml") + yaml_config = load_fixture("workspacebuilder/window_automatic_rename.yaml") s = session sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -424,7 +427,7 @@ def test_blank_pane_count(session): def test_start_directory(session, tmp_path: pathlib.Path): - yaml_config = loadfixture("workspacebuilder/start_directory.yaml") + yaml_config = load_fixture("workspacebuilder/start_directory.yaml") test_dir = tmp_path / "foo bar" test_dir.mkdir() test_config = yaml_config.format(TEST_DIR=test_dir) @@ -467,7 +470,7 @@ def test_start_directory_relative(session, tmp_path: pathlib.Path): $ tmuxp load . """ - yaml_config = loadfixture("workspacebuilder/start_directory_relative.yaml") + yaml_config = load_fixture("workspacebuilder/start_directory_relative.yaml") test_dir = tmp_path / "foo bar" test_dir.mkdir() @@ -514,7 +517,7 @@ def test_pane_order(session): """ - yaml_config = loadfixture("workspacebuilder/pane_ordering.yaml").format( + yaml_config = load_fixture("workspacebuilder/pane_ordering.yaml").format( HOME=os.path.realpath(os.path.expanduser("~")) ) @@ -565,7 +568,7 @@ def test_pane_order(session): def test_window_index(session): - yaml_config = loadfixture("workspacebuilder/window_index.yaml") + yaml_config = load_fixture("workspacebuilder/window_index.yaml") proc = session.cmd("show-option", "-gv", "base-index") base_index = int(proc.stdout[0]) name_index_map = {"zero": 0 + base_index, "one": 1 + base_index, "five": 5} @@ -583,7 +586,7 @@ def test_window_index(session): def test_before_load_throw_error_if_retcode_error(server): - config_script_fails = loadfixture("workspacebuilder/config_script_fails.yaml") + config_script_fails = load_fixture("workspacebuilder/config_script_fails.yaml") sconfig = kaptan.Kaptan(handler="yaml") yaml = config_script_fails.format( fixtures_dir=fixtures_dir, @@ -607,7 +610,7 @@ def test_before_load_throw_error_if_retcode_error(server): def test_before_load_throw_error_if_file_not_exists(server): - config_script_not_exists = loadfixture( + config_script_not_exists = load_fixture( "workspacebuilder/config_script_not_exists.yaml" ) sconfig = kaptan.Kaptan(handler="yaml") @@ -633,7 +636,7 @@ def test_before_load_throw_error_if_file_not_exists(server): def test_before_load_true_if_test_passes(server): - config_script_completes = loadfixture( + config_script_completes = load_fixture( "workspacebuilder/config_script_completes.yaml" ) assert os.path.exists(os.path.join(fixtures_dir, "script_complete.sh")) @@ -654,7 +657,7 @@ def test_before_load_true_if_test_passes(server): def test_before_load_true_if_test_passes_with_args(server): - config_script_completes = loadfixture( + config_script_completes = load_fixture( "workspacebuilder/config_script_completes.yaml" ) @@ -678,7 +681,7 @@ def test_before_load_true_if_test_passes_with_args(server): def test_plugin_system_before_workspace_builder( monkeypatch_plugin_test_packages, session ): - config_plugins = loadfixture("workspacebuilder/plugin_bwb.yaml") + config_plugins = load_fixture("workspacebuilder/plugin_bwb.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(config_plugins).get() @@ -694,7 +697,7 @@ def test_plugin_system_before_workspace_builder( def test_plugin_system_on_window_create(monkeypatch_plugin_test_packages, session): - config_plugins = loadfixture("workspacebuilder/plugin_owc.yaml") + config_plugins = load_fixture("workspacebuilder/plugin_owc.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(config_plugins).get() @@ -710,7 +713,7 @@ def test_plugin_system_on_window_create(monkeypatch_plugin_test_packages, sessio def test_plugin_system_after_window_finished(monkeypatch_plugin_test_packages, session): - config_plugins = loadfixture("workspacebuilder/plugin_awf.yaml") + config_plugins = load_fixture("workspacebuilder/plugin_awf.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(config_plugins).get() @@ -726,7 +729,7 @@ def test_plugin_system_after_window_finished(monkeypatch_plugin_test_packages, s def test_plugin_system_on_window_create_multiple_windows(session): - config_plugins = loadfixture("workspacebuilder/plugin_owc_multiple_windows.yaml") + config_plugins = load_fixture("workspacebuilder/plugin_owc_multiple_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(config_plugins).get() @@ -745,7 +748,7 @@ def test_plugin_system_on_window_create_multiple_windows(session): def test_plugin_system_after_window_finished_multiple_windows( monkeypatch_plugin_test_packages, session ): - config_plugins = loadfixture("workspacebuilder/plugin_awf_multiple_windows.yaml") + config_plugins = load_fixture("workspacebuilder/plugin_awf_multiple_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(config_plugins).get() @@ -762,7 +765,7 @@ def test_plugin_system_after_window_finished_multiple_windows( def test_plugin_system_multiple_plugins(monkeypatch_plugin_test_packages, session): - config_plugins = loadfixture("workspacebuilder/plugin_multiple_plugins.yaml") + config_plugins = load_fixture("workspacebuilder/plugin_multiple_plugins.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(config_plugins).get() @@ -785,7 +788,7 @@ def test_plugin_system_multiple_plugins(monkeypatch_plugin_test_packages, sessio def test_load_configs_same_session(server): - yaml_config = loadfixture("workspacebuilder/three_windows.yaml") + yaml_config = load_fixture("workspacebuilder/three_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -795,7 +798,7 @@ def test_load_configs_same_session(server): assert len(server.sessions) == 1 assert len(server.sessions[0]._windows) == 3 - yaml_config = loadfixture("workspacebuilder/two_windows.yaml") + yaml_config = load_fixture("workspacebuilder/two_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -805,7 +808,7 @@ def test_load_configs_same_session(server): assert len(server.sessions) == 2 assert len(server.sessions[1]._windows) == 2 - yaml_config = loadfixture("workspacebuilder/two_windows.yaml") + yaml_config = load_fixture("workspacebuilder/two_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -818,7 +821,7 @@ def test_load_configs_same_session(server): def test_load_configs_separate_sessions(server): - yaml_config = loadfixture("workspacebuilder/three_windows.yaml") + yaml_config = load_fixture("workspacebuilder/three_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -828,7 +831,7 @@ def test_load_configs_separate_sessions(server): assert len(server.sessions) == 1 assert len(server.sessions[0]._windows) == 3 - yaml_config = loadfixture("workspacebuilder/two_windows.yaml") + yaml_config = load_fixture("workspacebuilder/two_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -842,14 +845,14 @@ def test_load_configs_separate_sessions(server): def test_find_current_active_pane(server, monkeypatch): - yaml_config = loadfixture("workspacebuilder/three_windows.yaml") + yaml_config = load_fixture("workspacebuilder/three_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() builder = WorkspaceBuilder(sconf=sconfig, server=server) builder.build() - yaml_config = loadfixture("workspacebuilder/two_windows.yaml") + yaml_config = load_fixture("workspacebuilder/two_windows.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() @@ -869,3 +872,99 @@ def test_find_current_active_pane(server, monkeypatch): builder = WorkspaceBuilder(sconf=sconfig, server=server) assert builder.find_current_attached_session() == second_session + + +@pytest.mark.parametrize( + "yaml,output,should_see", + [ + [ + textwrap.dedent( + """ +session_name: Should not execute +windows: +- panes: + - shell_command: echo "___$((1 + 3))___" + enter: false + """ + ), + "___4___", + False, + ], + [ + textwrap.dedent( + """ +session_name: Should not execute +windows: +- panes: + - shell_command: + - echo "___$((1 + 3))___" + enter: false + """ + ), + "___4___", + False, + ], + [ + textwrap.dedent( + """ +session_name: Should execute +windows: +- panes: + - shell_command: echo "___$((1 + 3))___" + """ + ), + "___4___", + True, + ], + [ + textwrap.dedent( + """ +session_name: Should execute +windows: +- panes: + - shell_command: + - echo "___$((1 + 3))___" + """ + ), + "___4___", + True, + ], + ], + ids=[ + "pane_enter_false_shortform", + "pane_enter_false_longform", + "pane_enter_default_shortform", + "pane_enter_default_longform", + ], +) +def test_load_workspace_enter( + tmp_path: pathlib.Path, + server: libtmux.Server, + monkeypatch: pytest.MonkeyPatch, + yaml, + output, + should_see, +): + yaml_config = tmp_path / "simple.yaml" + yaml_config.write_text( + yaml, + encoding="utf-8", + ) + sconfig = kaptan.Kaptan(handler="yaml") + sconfig = sconfig.import_config(str(yaml_config)).get() + sconfig = config.expand(sconfig) + sconfig = config.trickle(sconfig) + builder = WorkspaceBuilder(sconf=sconfig, server=server) + builder.build() + + time.sleep(1) + + session = builder.session + pane = session.attached_pane + + captured_pane = "\n".join(pane.capture_pane()) + + if should_see: + assert output in captured_pane + else: + assert output not in captured_pane diff --git a/tests/test_workspacefreezer.py b/tests/test_workspacefreezer.py index f85dc5dd24d..fb34bc35547 100644 --- a/tests/test_workspacefreezer.py +++ b/tests/test_workspacefreezer.py @@ -6,11 +6,11 @@ from tmuxp import config from tmuxp.workspacebuilder import WorkspaceBuilder, freeze -from .fixtures._util import loadfixture +from .fixtures._util import load_fixture def test_freeze_config(session): - yaml_config = loadfixture("workspacefreezer/sampleconfig.yaml") + yaml_config = load_fixture("workspacefreezer/sampleconfig.yaml") sconfig = kaptan.Kaptan(handler="yaml") sconfig = sconfig.import_config(yaml_config).get() diff --git a/tmuxp/workspacebuilder.py b/tmuxp/workspacebuilder.py index 9be5274ceba..a470ea07aaf 100644 --- a/tmuxp/workspacebuilder.py +++ b/tmuxp/workspacebuilder.py @@ -362,8 +362,10 @@ def get_pane_shell(): else: suppress = True + enter = pconf.get("enter", True) + for cmd in pconf["shell_command"]: - p.send_keys(cmd, suppress_history=suppress) + p.send_keys(cmd, suppress_history=suppress, enter=enter) if "focus" in pconf and pconf["focus"]: w.select_pane(p["pane_id"])