==> Building on U ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list ./ PKGBUILD 1,892 100% 0.00kB/s 0:00:00 1,892 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/3) tmuxp-1.22.0-1.log 200 100% 195.31kB/s 0:00:00 200 100% 195.31kB/s 0:00:00 (xfr#2, to-chk=0/3) sent 1,262 bytes received 75 bytes 891.33 bytes/sec total size is 2,080 speedup is 1.56 ==> Running extra-riscv64-build -- -d /home/felix/packages/riscv64-pkg-cache:/var/cache/pacman/pkg -l felix0 on remote host... [?25l:: Synchronizing package databases... core downloading... extra downloading... community downloading... :: Starting full system upgrade... there is nothing to do [?25h==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix0]...done ==> Making package: tmuxp 1.22.0-1 (Wed Dec 28 18:07:21 2022) ==> Retrieving sources...  -> Downloading tmuxp-1.22.0.tar.gz... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 59 804k 59 479k 0 0 337k 0 0:00:02 0:00:01 0:00:01 337k 100 804k 100 804k 0 0 544k 0 0:00:01 0:00:01 --:--:-- 5602k ==> Validating source files with sha512sums... tmuxp-1.22.0.tar.gz ... Passed ==> Validating source files with b2sums... tmuxp-1.22.0.tar.gz ... Passed ==> Making package: tmuxp 1.22.0-1 (Wed Dec 28 18:08:13 2022) ==> Checking runtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (11) New Version Net Change Download Size core/libnsl 2.0.0-2 0.06 MiB extra/libutempter 1.2.1-3 0.02 MiB 0.01 MiB extra/libyaml 0.2.5-1 0.14 MiB core/python 3.10.9-1 81.37 MiB community/python-yaml 6.0-1 0.68 MiB community/tmux 3.3_a-2 0.86 MiB 0.41 MiB community/python-click 8.1.3-1 0.89 MiB 0.15 MiB community/python-colorama 0.4.6-1 0.17 MiB 0.04 MiB community/python-kaptan 0.5.12-7 0.05 MiB 0.02 MiB community/python-libtmux 0.16.1-1 0.37 MiB 0.07 MiB community/python-typing_extensions 4.4.0-1 0.22 MiB Total Download Size: 0.70 MiB Total Installed Size: 84.84 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... tmux-3.3_a-2-riscv64 downloading... python-click-8.1.3-1-any downloading... python-libtmux-0.16.1-1-any downloading... python-colorama-0.4.6-1-any downloading... python-kaptan-0.5.12-7-any downloading... libutempter-1.2.1-3-riscv64 downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing libnsl... installing python... Optional dependencies for python python-setuptools python-pip sqlite [installed] mpdecimal: for decimal xz: for lzma [installed] tk: for tkinter installing python-click... installing python-colorama... installing libyaml... installing python-yaml... installing python-kaptan... installing python-typing_extensions... installing libutempter... installing tmux... installing python-libtmux... Optional dependencies for python-libtmux python-pytest: for pytest plugin [?25h==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (19) New Version Net Change Download Size extra/python-attrs 22.2.0-1 0.44 MiB 0.08 MiB community/python-exceptiongroup 1.1.0-1 0.09 MiB 0.02 MiB community/python-iniconfig 1.1.1-5 0.02 MiB community/python-jsonschema 4.17.3-1 0.95 MiB 0.13 MiB community/python-lark-parser 1.1.5-1 0.90 MiB 0.18 MiB extra/python-packaging 21.3-1 0.26 MiB extra/python-pep517 0.13.0-1 0.13 MiB community/python-pluggy 1.0.0-1 0.10 MiB extra/python-pyparsing 3.0.9-1 0.96 MiB community/python-pyrsistent 0.19.2-1 0.48 MiB 0.09 MiB extra/python-tomli 2.0.1-1 0.08 MiB community/python-tomlkit 0.11.6-1 0.39 MiB 0.07 MiB community/python-build 0.9.0-1 1.06 MiB community/python-installer 0.6.0-1 1.20 MiB community/python-poetry-core 1.4.0-1 4.90 MiB 0.80 MiB community/python-pytest 7.2.0-4 2.79 MiB community/python-pytest-mock 3.10.0-1 0.06 MiB 0.02 MiB community/python-pytest-rerunfailures 10.3-1 0.08 MiB 0.02 MiB community/python-wheel 0.38.4-1 0.16 MiB Total Download Size: 1.42 MiB Total Installed Size: 15.05 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-poetry-core-1.4.0-1-any downloading... python-lark-parser-1.1.5-1-any downloading... python-jsonschema-4.17.3-1-any downloading... python-pyrsistent-0.19.2-1-riscv64 downloading... python-attrs-22.2.0-1-any downloading... python-tomlkit-0.11.6-1-any downloading... python-exceptiongroup-1.1.0-1-any downloading... python-pytest-rerunfailures-10.3-1-any downloading... python-pytest-mock-3.10.0-1-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing python-tomli... installing python-pep517... installing python-pyparsing... Optional dependencies for python-pyparsing python-railroad-diagrams: for generating Railroad Diagrams python-jinja: for generating Railroad Diagrams installing python-packaging... installing python-build... Optional dependencies for python-build python-virtualenv: Use virtualenv for build isolation installing python-installer... installing python-attrs... installing python-pyrsistent... installing python-jsonschema... Optional dependencies for python-jsonschema python-isoduration: for duration format python-fqdn: for hostname format python-idna: for idn-hostname format python-jsonpointer: for json-pointer & relative-json-pointer format python-rfc3339-validator: for date-time format python-rfc3987: for iri, iri-reference, uri & uri-reference format python-uri-template: for uri-template format python-webcolors: for color format installing python-lark-parser... installing python-tomlkit... installing python-poetry-core... installing python-wheel... Optional dependencies for python-wheel python-keyring: for wheel.signatures python-xdg: for wheel.signatures installing python-exceptiongroup... installing python-iniconfig... installing python-pluggy... installing python-pytest... installing python-pytest-mock... installing python-pytest-rerunfailures... [?25h==> Retrieving sources...  -> Found tmuxp-1.22.0.tar.gz ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Extracting tmuxp-1.22.0.tar.gz with bsdtar ==> Starting build()... * Getting build dependencies for wheel... * Building wheel... Successfully built tmuxp-1.22.0-py3-none-any.whl ==> Starting check()... ============================= test session starts ============================== platform linux -- Python 3.10.9, pytest-7.2.0, pluggy-1.0.0 -- /usr/bin/python cachedir: .pytest_cache rootdir: /build/tmuxp/src/tmuxp-1.22.0 plugins: libtmux-0.16.1, mock-3.10.0, rerunfailures-10.3 collecting ... collected 195 items / 2 deselected / 193 selected tests/test_cli.py::test_creates_config_dir_not_exists PASSED [ 0%] tests/test_cli.py::test_load_workspace PASSED [ 1%] tests/test_cli.py::test_load_workspace_passes_tmux_config PASSED [ 1%] tests/test_cli.py::test_load_workspace_named_session PASSED [ 2%] tests/test_cli.py::test_load_workspace_name_match_regression_252 PASSED [ 2%] tests/test_cli.py::test_load_symlinked_workspace FAILED [ 3%] tests/test_cli.py::test_load[dir-relative-dot-samedir] PASSED [ 3%] tests/test_cli.py::test_load[dir-relative-dot-slash-samedir] PASSED [ 4%] tests/test_cli.py::test_load[dir-relative-file-samedir] PASSED [ 4%] tests/test_cli.py::test_load[filename-relative-file-samedir] PASSED [ 5%] tests/test_cli.py::test_load[configdir-session-name] PASSED [ 5%] tests/test_cli.py::test_load[configdir-absolute] PASSED [ 6%] tests/test_cli.py::test_load[configdir-session-name-double] PASSED [ 6%] tests/test_cli.py::test_regression_00132_session_name_with_dots PASSED [ 7%] tests/test_cli.py::test_load_zsh_autotitle_warning[cli_args0] FAILED [ 7%] tests/test_cli.py::test_load_zsh_autotitle_warning[cli_args1] FAILED [ 8%] tests/test_cli.py::test_load_log_file[cli_args0] PASSED [ 8%] tests/test_cli.py::test_shell[cli_args0-inputs0-env0-{SERVER_SOCKET_NAME}-cli_cmd0] FAILED [ 9%] tests/test_cli.py::test_shell[cli_args0-inputs0-env0-{SERVER_SOCKET_NAME}-cli_cmd1] FAILED [ 9%] tests/test_cli.py::test_shell[cli_args1-inputs1-env1-{SESSION_NAME}-cli_cmd0] FAILED [ 10%] tests/test_cli.py::test_shell[cli_args1-inputs1-env1-{SESSION_NAME}-cli_cmd1] FAILED [ 10%] tests/test_cli.py::test_shell[cli_args2-inputs2-env2-True-cli_cmd0] FAILED [ 11%] tests/test_cli.py::test_shell[cli_args2-inputs2-env2-True-cli_cmd1] FAILED [ 11%] tests/test_cli.py::test_shell[cli_args3-inputs3-env3-{WINDOW_NAME}-cli_cmd0] FAILED [ 12%] tests/test_cli.py::test_shell[cli_args3-inputs3-env3-{WINDOW_NAME}-cli_cmd1] FAILED [ 12%] tests/test_cli.py::test_shell[cli_args4-inputs4-env4-{PANE_ID}-cli_cmd0] FAILED [ 13%] tests/test_cli.py::test_shell[cli_args4-inputs4-env4-{PANE_ID}-cli_cmd1] FAILED [ 13%] tests/test_cli.py::test_shell[cli_args5-inputs5-env5-{PANE_ID}-cli_cmd0] FAILED [ 14%] tests/test_cli.py::test_shell[cli_args5-inputs5-env5-{PANE_ID}-cli_cmd1] FAILED [ 15%] tests/test_cli.py::test_shell_target_missing[cli_args0-inputs0-env0-template_ctx0-CalledProcessError-.*DoesNotExist.*-cli_cmd0] FAILED [ 15%] tests/test_cli.py::test_shell_target_missing[cli_args0-inputs0-env0-template_ctx0-CalledProcessError-.*DoesNotExist.*-cli_cmd1] FAILED [ 16%] tests/test_cli.py::test_shell_target_missing[cli_args1-inputs1-env1-template_ctx1-TmuxpException-Session not found: nonexistant_session-cli_cmd0] FAILED [ 16%] tests/test_cli.py::test_shell_target_missing[cli_args1-inputs1-env1-template_ctx1-TmuxpException-Session not found: nonexistant_session-cli_cmd1] FAILED [ 17%] tests/test_cli.py::test_shell_target_missing[cli_args2-inputs2-env2-template_ctx2-TmuxpException-Window not found: {WINDOW_NAME}-cli_cmd0] FAILED [ 17%] tests/test_cli.py::test_shell_target_missing[cli_args2-inputs2-env2-template_ctx2-TmuxpException-Window not found: {WINDOW_NAME}-cli_cmd1] FAILED [ 18%] tests/test_cli.py::test_shell_interactive[cli_args0-inputs0-env0-(InteractiveConsole)-cli_cmd0] FAILED [ 18%] tests/test_cli.py::test_shell_interactive[cli_args1-inputs1-env1-(InteractiveConsole)-cli_cmd0] FAILED [ 19%] tests/test_cli.py::test_convert[cli_args0] PASSED [ 19%] tests/test_cli.py::test_convert[cli_args1] PASSED [ 20%] tests/test_cli.py::test_convert[cli_args2] PASSED [ 20%] tests/test_cli.py::test_convert[cli_args3] PASSED [ 21%] tests/test_cli.py::test_convert[cli_args4] PASSED [ 21%] tests/test_cli.py::test_convert_json[cli_args0] PASSED [ 22%] tests/test_cli.py::test_convert_json[cli_args1] PASSED [ 22%] tests/test_cli.py::test_convert_json[cli_args2] PASSED [ 23%] tests/test_cli.py::test_import[cli_args0] PASSED [ 23%] tests/test_cli.py::test_help[cli_args0] PASSED [ 24%] tests/test_cli.py::test_help[cli_args1] PASSED [ 24%] tests/test_cli.py::test_import_teamocil[cli_args0-inputs0] PASSED [ 25%] tests/test_cli.py::test_import_teamocil[cli_args1-inputs1] PASSED [ 25%] tests/test_cli.py::test_import_teamocil[cli_args2-inputs2] PASSED [ 26%] tests/test_cli.py::test_import_tmuxinator[cli_args0-inputs0] PASSED [ 26%] tests/test_cli.py::test_import_tmuxinator[cli_args1-inputs1] PASSED [ 27%] tests/test_cli.py::test_import_tmuxinator[cli_args2-inputs2] PASSED [ 27%] tests/test_cli.py::test_freeze[cli_args0-inputs0] FAILED [ 28%] tests/test_cli.py::test_freeze[cli_args1-inputs1] FAILED [ 29%] tests/test_cli.py::test_freeze[cli_args2-inputs2] FAILED [ 29%] tests/test_cli.py::test_freeze[cli_args3-inputs3] FAILED [ 30%] tests/test_cli.py::test_freeze_overwrite[cli_args0-inputs0] FAILED [ 30%] tests/test_cli.py::test_freeze_overwrite[cli_args1-inputs1] FAILED [ 31%] tests/test_cli.py::test_resolve_behavior PASSED [ 31%] tests/test_cli.py::test_get_tmuxinator_dir PASSED [ 32%] tests/test_cli.py::test_get_teamocil_dir PASSED [ 32%] tests/test_cli.py::test_pass_config_dir_ClickPath PASSED [ 33%] tests/test_cli.py::test_ls_cli PASSED [ 33%] tests/test_cli.py::test_load_plugins PASSED [ 34%] tests/test_cli.py::test_load_plugins_version_fail_skip[cli_args0-inputs0] SKIPPED (Not sure how to clean up the tmux session this makes) [ 34%] tests/test_cli.py::test_load_plugins_version_fail_no_skip[cli_args0-inputs0] PASSED [ 35%] tests/test_cli.py::test_load_plugins_plugin_missing[cli_args0] PASSED [ 35%] tests/test_cli.py::test_plugin_system_before_script PASSED [ 36%] tests/test_cli.py::test_reattach_plugins PASSED [ 36%] tests/test_cli.py::test_load_attached PASSED [ 37%] tests/test_cli.py::test_load_attached_detached PASSED [ 37%] tests/test_cli.py::test_load_attached_within_tmux PASSED [ 38%] tests/test_cli.py::test_load_attached_within_tmux_detached PASSED [ 38%] tests/test_cli.py::test_load_append_windows_to_current_session FAILED [ 39%] tests/test_cli.py::test_debug_info_cli PASSED [ 39%] tests/test_plugin.py::test_all_pass PASSED [ 40%] tests/test_plugin.py::test_tmux_version_fail_min PASSED [ 40%] tests/test_plugin.py::test_tmux_version_fail_max PASSED [ 41%] tests/test_plugin.py::test_tmux_version_fail_incompatible PASSED [ 41%] tests/test_plugin.py::test_tmuxp_version_fail_min PASSED [ 42%] tests/test_plugin.py::test_tmuxp_version_fail_max PASSED [ 43%] tests/test_plugin.py::test_tmuxp_version_fail_incompatible PASSED [ 43%] tests/test_plugin.py::test_libtmux_version_fail_min PASSED [ 44%] tests/test_plugin.py::test_libtmux_version_fail_max PASSED [ 44%] tests/test_plugin.py::test_libtmux_version_fail_incompatible PASSED [ 45%] tests/test_shell.py::test_detect_best_shell PASSED [ 45%] tests/test_shell.py::test_shell_detect PASSED [ 46%] tests/test_util.py::test_raise_BeforeLoadScriptNotExists_if_not_exists PASSED [ 46%] tests/test_util.py::test_raise_BeforeLoadScriptError_if_retcode PASSED [ 47%] tests/test_util.py::test_return_stdout_if_ok PASSED [ 47%] tests/test_util.py::test_beforeload_returncode PASSED [ 48%] tests/test_util.py::test_beforeload_returns_stderr_messages PASSED [ 48%] tests/test_util.py::test_get_session_should_default_to_local_attached_session FAILED [ 49%] tests/test_util.py::test_get_session_should_return_first_session_if_no_active_session PASSED [ 49%] tests/tests/test_helpers.py::test_kills_session PASSED [ 50%] tests/tests/test_helpers.py::test_if_session_killed_before PASSED [ 50%] tests/workspace/test_builder.py::test_split_windows PASSED [ 51%] tests/workspace/test_builder.py::test_split_windows_three_pane PASSED [ 51%] tests/workspace/test_builder.py::test_focus_pane_index FAILED [ 52%] tests/workspace/test_builder.py::test_suppress_history SKIPPED (Test needs to be rewritten, assertion not reliable across platforms and CI. See https://github.com/tmux-python/tmuxp/issues/310.) [ 52%] tests/workspace/test_builder.py::test_session_options PASSED [ 53%] tests/workspace/test_builder.py::test_global_options PASSED [ 53%] tests/workspace/test_builder.py::test_global_session_env_options PASSED [ 54%] tests/workspace/test_builder.py::test_window_options PASSED [ 54%] tests/workspace/test_builder.py::test_window_options_after PASSED [ 55%] tests/workspace/test_builder.py::test_environment_variables PASSED [ 55%] tests/workspace/test_builder.py::test_environment_variables_logs SKIPPED (warnings are not needed for tmux >= 3.0) [ 56%] tests/workspace/test_builder.py::test_blank_pane_count FAILED [ 56%] tests/workspace/test_builder.py::test_start_directory FAILED [ 57%] tests/workspace/test_builder.py::test_start_directory_relative FAILED [ 58%] tests/workspace/test_builder.py::test_start_directory_sets_session_path PASSED [ 58%] tests/workspace/test_builder.py::test_pane_order FAILED [ 59%] tests/workspace/test_builder.py::test_window_index FAILED [ 59%] tests/workspace/test_builder.py::test_before_load_throw_error_if_retcode_error PASSED [ 60%] tests/workspace/test_builder.py::test_before_load_throw_error_if_file_not_exists PASSED [ 60%] tests/workspace/test_builder.py::test_before_load_true_if_test_passes PASSED [ 61%] tests/workspace/test_builder.py::test_before_load_true_if_test_passes_with_args PASSED [ 61%] tests/workspace/test_builder.py::test_plugin_system_before_workspace_builder PASSED [ 62%] tests/workspace/test_builder.py::test_plugin_system_on_window_create PASSED [ 62%] tests/workspace/test_builder.py::test_plugin_system_after_window_finished PASSED [ 63%] tests/workspace/test_builder.py::test_plugin_system_on_window_create_multiple_windows PASSED [ 63%] tests/workspace/test_builder.py::test_plugin_system_after_window_finished_multiple_windows PASSED [ 64%] tests/workspace/test_builder.py::test_plugin_system_multiple_plugins PASSED [ 64%] tests/workspace/test_builder.py::test_load_configs_same_session PASSED [ 65%] tests/workspace/test_builder.py::test_load_configs_separate_sessions PASSED [ 65%] tests/workspace/test_builder.py::test_find_current_active_pane FAILED [ 66%] tests/workspace/test_builder.py::test_load_workspace_enter[pane_enter_false_shortform] PASSED [ 66%] tests/workspace/test_builder.py::test_load_workspace_enter[pane_enter_false_longform] PASSED [ 67%] tests/workspace/test_builder.py::test_load_workspace_enter[pane_enter_default_shortform] PASSED [ 67%] tests/workspace/test_builder.py::test_load_workspace_enter[pane_enter_default_longform] PASSED [ 68%] tests/workspace/test_builder.py::test_load_workspace_enter[pane_command_enter_false_shortform] PASSED [ 68%] tests/workspace/test_builder.py::test_load_workspace_enter[pane_command_enter_false_longform] PASSED [ 69%] tests/workspace/test_builder.py::test_load_workspace_enter[pane_command_enter_default_shortform] PASSED [ 69%] tests/workspace/test_builder.py::test_load_workspace_enter[pane_command_enter_default_longform] PASSED [ 70%] tests/workspace/test_builder.py::test_load_workspace_sleep[command_level_sleep_shortform] PASSED [ 70%] tests/workspace/test_builder.py::test_load_workspace_sleep[command_level_pane_sleep_longform] PASSED [ 71%] tests/workspace/test_builder.py::test_load_workspace_sleep[pane_sleep_shortform] PASSED [ 72%] tests/workspace/test_builder.py::test_load_workspace_sleep[pane_sleep_longform] PASSED [ 72%] tests/workspace/test_builder.py::test_load_workspace_sleep[shell_before_before_command_level] PASSED [ 73%] tests/workspace/test_builder.py::test_first_pane_start_directory FAILED [ 73%] tests/workspace/test_builder.py::test_layout_main_horizontal FAILED [ 74%] tests/workspace/test_builder.py::test_issue_800_default_size_many_windows[default-behavior] PASSED [ 74%] tests/workspace/test_builder.py::test_issue_800_default_size_many_windows[v1.13.1 default-size-breaks] PASSED [ 75%] tests/workspace/test_builder.py::test_issue_800_default_size_many_windows[v1.13.1-option-workaround] PASSED [ 75%] tests/workspace/test_config.py::test_export_json PASSED [ 76%] tests/workspace/test_config.py::test_find_workspace_file PASSED [ 76%] tests/workspace/test_config.py::test_workspace_expand1 PASSED [ 77%] tests/workspace/test_config.py::test_workspace_expand2 PASSED [ 77%] tests/workspace/test_config.py::test_inheritance_workspace PASSED [ 78%] tests/workspace/test_config.py::test_shell_command_before PASSED [ 78%] tests/workspace/test_config.py::test_in_session_scope PASSED [ 79%] tests/workspace/test_config.py::test_trickle_relative_start_directory PASSED [ 79%] tests/workspace/test_config.py::test_trickle_window_with_no_pane_workspace PASSED [ 80%] tests/workspace/test_config.py::test_expands_blank_panes PASSED [ 80%] tests/workspace/test_config.py::test_no_session_name PASSED [ 81%] tests/workspace/test_config.py::test_no_windows PASSED [ 81%] tests/workspace/test_config.py::test_no_window_name PASSED [ 82%] tests/workspace/test_config.py::test_replaces_env_variables PASSED [ 82%] tests/workspace/test_config.py::test_plugins PASSED [ 83%] tests/workspace/test_finder.py::test_in_dir_from_config_dir PASSED [ 83%] tests/workspace/test_finder.py::test_ignore_non_configs_from_current_dir PASSED [ 84%] tests/workspace/test_finder.py::test_get_configs_cwd PASSED [ 84%] tests/workspace/test_finder.py::test_is_pure_name[.-False] PASSED [ 85%] tests/workspace/test_finder.py::test_is_pure_name[./-False] PASSED [ 86%] tests/workspace/test_finder.py::test_is_pure_name[-False] PASSED [ 86%] tests/workspace/test_finder.py::test_is_pure_name[.tmuxp.yaml-False] PASSED [ 87%] tests/workspace/test_finder.py::test_is_pure_name[../.tmuxp.yaml-False] PASSED [ 87%] tests/workspace/test_finder.py::test_is_pure_name[../-False] PASSED [ 88%] tests/workspace/test_finder.py::test_is_pure_name[/hello/world-False] PASSED [ 88%] tests/workspace/test_finder.py::test_is_pure_name[~/.tmuxp/hey-False] PASSED [ 89%] tests/workspace/test_finder.py::test_is_pure_name[~/work/c/tmux/-False] PASSED [ 89%] tests/workspace/test_finder.py::test_is_pure_name[~/work/c/tmux/.tmuxp.yaml-False] PASSED [ 90%] tests/workspace/test_finder.py::test_is_pure_name[myproject-True] PASSED [ 90%] tests/workspace/test_finder.py::test_tmuxp_configdir_env_var PASSED [ 91%] tests/workspace/test_finder.py::test_tmuxp_configdir_xdg_config_dir PASSED [ 91%] tests/workspace/test_finder.py::test_resolve_dot PASSED [ 92%] tests/workspace/test_finder.py::test_find_workspace_file_arg PASSED [ 92%] tests/workspace/test_freezer.py::test_freeze_config FAILED [ 93%] tests/workspace/test_freezer.py::test_inline_workspace PASSED [ 93%] tests/workspace/test_freezer.py::test_export_yaml PASSED [ 94%] tests/workspace/test_import_teamocil.py::test_config_to_dict[windows:\n- name: "sample-two-panes"\n root: "~/Code/sample/www"\n layout: even-horizontal\n panes:\n - cmd: ["pwd", "ls -la"]\n - cmd: "rails server --port 3000"\n-teamocil_dict0-tmuxp_dict0] PASSED [ 94%] tests/workspace/test_import_teamocil.py::test_config_to_dict[windows:\n- name: "sample-four-panes"\n root: "~/Code/sample/www"\n layout: tiled\n panes:\n - cmd: "pwd"\n - cmd: "pwd"\n - cmd: "pwd"\n - cmd: "pwd"\n-teamocil_dict1-tmuxp_dict1] PASSED [ 95%] tests/workspace/test_import_teamocil.py::test_config_to_dict[windows:\n- name: "my-first-window"\n root: "~/Projects/foo-www"\n layout: even-vertical\n filters:\n before: "rbenv local 2.0.0-p0"\n after: "echo 'I am done initializing this pane.'"\n panes:\n - cmd: "git status"\n - cmd: "bundle exec rails server --port 40"\n focus: true\n - cmd:\n - "sudo service memcached start"\n - "sudo service mongodb start"\n-teamocil_dict2-tmuxp_dict2] PASSED [ 95%] tests/workspace/test_import_teamocil.py::test_config_to_dict[windows:\n- name: "erb-example"\n root: <%= ENV['MY_PROJECT_ROOT'] %>\n panes:\n - cmd: "pwd"\n-teamocil_dict3-tmuxp_dict3] PASSED [ 96%] tests/workspace/test_import_teamocil.py::test_multisession_config[two-windows-expected0] PASSED [ 96%] tests/workspace/test_import_teamocil.py::test_multisession_config[two-windows-with-filters-expected1] PASSED [ 97%] tests/workspace/test_import_teamocil.py::test_multisession_config[two-windows-with-custom-command-options-expected2] PASSED [ 97%] tests/workspace/test_import_teamocil.py::test_multisession_config[three-windows-within-a-session-expected3] PASSED [ 98%] tests/workspace/test_import_tmuxinator.py::test_config_to_dict[windows:\n- editor:\n layout: main-vertical\n panes:\n - vim\n - guard\n- server: bundle exec rails s\n- logs: tail -f logs/development.log\n-tmuxinator_dict0-tmuxp_dict0] PASSED [ 98%] tests/workspace/test_import_tmuxinator.py::test_config_to_dict[project_name: sample\nproject_root: ~/test\nsocket_name: foo # Remove to use default socket\npre: sudo /etc/rc.d/mysqld start # Runs before everything\nrbenv: 2.0.0-p247\ncli_args: -f ~/.tmux.mac.conf # Pass arguments to tmux\ntabs:\n- editor:\n pre:\n - echo "I get run in each pane, before each pane command!"\n -\n layout: main-vertical\n panes:\n - vim\n - #empty, will just run plain bash\n - top\n- shell: git pull\n- guard:\n layout: tiled\n pre:\n - echo "I get run in each pane."\n - echo "Before each pane command!"\n panes:\n -\n - #empty, will just run plain bash\n -\n- database: bundle exec rails db\n- server: bundle exec rails s\n- logs: tail -f log/development.log\n- console: bundle exec rails c\n- capistrano:\n- server: ssh user@example.com\n-tmuxinator_dict1-tmuxp_dict1] PASSED [ 99%] tests/workspace/test_import_tmuxinator.py::test_config_to_dict[# ~/.tmuxinator/sample.yml\n# you can make as many tabs as you wish...\n\nname: sample\nroot: ~/test\nsocket_name: foo # Remove to use default socket\npre: sudo /etc/rc.d/mysqld start # Runs before everything\npre_window: rbenv shell 2.0.0-p247 # Runs in each tab and pane\ntmux_options: -f ~/.tmux.mac.conf # Pass arguments to tmux\nwindows:\n- editor:\n pre:\n - echo "I get run in each pane, before each pane command!"\n -\n layout: main-vertical\n root: ~/test/editor\n panes:\n - vim\n - #empty, will just run plain bash\n - top\n- shell:\n - git pull\n - git merge\n- guard:\n layout: tiled\n pre:\n - echo "I get run in each pane."\n - echo "Before each pane command!"\n panes:\n -\n - #empty, will just run plain bash\n -\n- database: bundle exec rails db\n- server: bundle exec rails s\n- logs: tail -f log/development.log\n- console: bundle exec rails c\n- capistrano:\n- server: ssh user@example.com\n-tmuxinator_dict2-tmuxp_dict2] PASSED [100%] =================================== FAILURES =================================== ________________________ test_load_symlinked_workspace _________________________ self = Pane(%1 Window(@1 1:bash, Session($0 samplesimple))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_current_path' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: server = tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_load_symlinked_workspace0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafcc5db0> def test_load_symlinked_workspace( server: "Server", tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch ) -> None: # this is an implementation test. Since this testsuite may be ran within # a tmux session by the developer himself, delete the TMUX variable # temporarily. monkeypatch.delenv("TMUX", raising=False) realtemp = tmp_path / "myrealtemp" realtemp.mkdir() linktemp = tmp_path / "symlinktemp" linktemp.symlink_to(realtemp) projfile = linktemp / "simple.yaml" projfile.write_text( """ session_name: samplesimple start_directory: './' windows: - panes: - echo 'hey'""", encoding="utf-8", ) # open it detached session = load_workspace( str(projfile), socket_name=server.socket_name, detached=True ) assert session is not None assert session.attached_window is not None pane = session.attached_window.attached_pane assert isinstance(session, Session) assert session.name == "samplesimple" assert pane is not None > assert pane.pane_current_path == str(realtemp) tests/test_cli.py:198: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%1 Window(@1 1:bash, Session($0 samplesimple))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_current_path /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ----------------------------- Captured stdout call ----------------------------- [Loading] /tmp/pytest-of-builduser/pytest-0/test_load_symlinked_workspace0/symlinktemp/simple.yaml Session created in detached state. __________________ test_load_zsh_autotitle_warning[cli_args0] __________________ cli_args = ['load', '.', '-d', '-L', 'libtmux_testl8ci71hx'] tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_load_zsh_autotitle_warnin0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafbdd2d0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafbde9b0> server = @pytest.mark.parametrize( "cli_args", [["load", ".", "-d"], ["load", ".tmuxp.yaml", "-d"]] ) def test_load_zsh_autotitle_warning( cli_args: t.List[str], tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, server: "Server", ) -> None: # create dummy tmuxp yaml so we don't get yelled at yaml_config = tmp_path / ".tmuxp.yaml" yaml_config.write_text( """ session_name: test windows: - window_name: test panes: - """, encoding="utf-8", ) oh_my_zsh_path = tmp_path / ".oh-my-zsh" oh_my_zsh_path.mkdir() monkeypatch.setenv("HOME", str(tmp_path)) monkeypatch.chdir(tmp_path) monkeypatch.delenv("DISABLE_AUTO_TITLE", raising=False) monkeypatch.setenv("SHELL", "zsh") # Use tmux server (socket name) used in the test assert server.socket_name is not None cli_args = cli_args + ["-L", server.socket_name] cli.cli(cli_args) result = capsys.readouterr() assert "Please set" in result.out monkeypatch.setenv("DISABLE_AUTO_TITLE", "false") > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:411: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:134: in cli command_load( /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/load.py:633: in command_load load_workspace( /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/load.py:402: in load_workspace if builder.session_exists(session_name) and not append: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = session_name = 'test' def session_exists(self, session_name=None): exists = self.server.has_session(session_name) if not exists: return exists try: > self.session = self.server.sessions.filter(session_name=session_name)[0] E AttributeError: 'list' object has no attribute 'filter' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/workspace/builder.py:178: AttributeError ----------------------------- Captured stdout call ----------------------------- Please set: export DISABLE_AUTO_TITLE='true' in ~/.zshrc or where your zsh profile is stored. Remember the "export" at the beginning! Then create a new shell or type: $ source ~/.zshrc [Loading] /tmp/pytest-of-builduser/pytest-0/test_load_zsh_autotitle_warnin0/.tmuxp.yaml ------------------------------ Captured log call ------------------------------- INFO tmuxp.cli.utils:utils.py:24 [Loading] /tmp/pytest-of-builduser/pytest-0/test_load_zsh_autotitle_warnin0/.tmuxp.yaml INFO tmuxp.cli.utils:utils.py:24 [Loading] /tmp/pytest-of-builduser/pytest-0/test_load_zsh_autotitle_warnin0/.tmuxp.yaml __________________ test_load_zsh_autotitle_warning[cli_args1] __________________ cli_args = ['load', '.tmuxp.yaml', '-d', '-L', 'libtmux_test7qtr496i'] tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_load_zsh_autotitle_warnin1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafb18ee0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafb18cd0> server = @pytest.mark.parametrize( "cli_args", [["load", ".", "-d"], ["load", ".tmuxp.yaml", "-d"]] ) def test_load_zsh_autotitle_warning( cli_args: t.List[str], tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, server: "Server", ) -> None: # create dummy tmuxp yaml so we don't get yelled at yaml_config = tmp_path / ".tmuxp.yaml" yaml_config.write_text( """ session_name: test windows: - window_name: test panes: - """, encoding="utf-8", ) oh_my_zsh_path = tmp_path / ".oh-my-zsh" oh_my_zsh_path.mkdir() monkeypatch.setenv("HOME", str(tmp_path)) monkeypatch.chdir(tmp_path) monkeypatch.delenv("DISABLE_AUTO_TITLE", raising=False) monkeypatch.setenv("SHELL", "zsh") # Use tmux server (socket name) used in the test assert server.socket_name is not None cli_args = cli_args + ["-L", server.socket_name] cli.cli(cli_args) result = capsys.readouterr() assert "Please set" in result.out monkeypatch.setenv("DISABLE_AUTO_TITLE", "false") > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:411: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:134: in cli command_load( /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/load.py:633: in command_load load_workspace( /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/load.py:402: in load_workspace if builder.session_exists(session_name) and not append: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = session_name = 'test' def session_exists(self, session_name=None): exists = self.server.has_session(session_name) if not exists: return exists try: > self.session = self.server.sessions.filter(session_name=session_name)[0] E AttributeError: 'list' object has no attribute 'filter' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/workspace/builder.py:178: AttributeError ----------------------------- Captured stdout call ----------------------------- Please set: export DISABLE_AUTO_TITLE='true' in ~/.zshrc or where your zsh profile is stored. Remember the "export" at the beginning! Then create a new shell or type: $ source ~/.zshrc [Loading] /tmp/pytest-of-builduser/pytest-0/test_load_zsh_autotitle_warnin1/.tmuxp.yaml ------------------------------ Captured log call ------------------------------- INFO tmuxp.cli.utils:utils.py:24 [Loading] /tmp/pytest-of-builduser/pytest-0/test_load_zsh_autotitle_warnin1/.tmuxp.yaml INFO tmuxp.cli.utils:utils.py:24 [Loading] /tmp/pytest-of-builduser/pytest-0/test_load_zsh_autotitle_warnin1/.tmuxp.yaml _______ test_shell[cli_args0-inputs0-env0-{SERVER_SOCKET_NAME}-cli_cmd0] _______ cli_cmd = ['shell'] cli_args = ['shell', '-Llibtmux_testtabhprgc', '-c', 'print(str(server.socket_name))'] inputs = [], expected_output = '{SERVER_SOCKET_NAME}', env = {} server = session = Session($1 libtmux_3q8j4ulb) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args0_inputs0_e0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafbc0610> capsys = <_pytest.capture.CaptureFixture object at 0x3fafbc3880> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testtabhprgc',...=None, window_name=None, command='print(str(server.socket_name))', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _______ test_shell[cli_args0-inputs0-env0-{SERVER_SOCKET_NAME}-cli_cmd1] _______ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-Llibtmux_testwqrmcna7', '-c', 'print(str(server.socket_name))'] inputs = [], expected_output = '{SERVER_SOCKET_NAME}', env = {} server = session = Session($1 libtmux_c6879i43) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args0_inputs0_e1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafba1f30> capsys = <_pytest.capture.CaptureFixture object at 0x3fafba2230> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testwqrmcna7',...e=None, window_name=None, command='print(str(server.socket_name))', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError __________ test_shell[cli_args1-inputs1-env1-{SESSION_NAME}-cli_cmd0] __________ cli_cmd = ['shell'] cli_args = ['shell', '-Llibtmux_testlz12s4ih', 'libtmux_ul2xtenb', '-c', 'print(session.name)'] inputs = [], expected_output = '{SESSION_NAME}', env = {} server = session = Session($1 libtmux_ul2xtenb) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args1_inputs1_e0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafe4d570> capsys = <_pytest.capture.CaptureFixture object at 0x3fafe4f700> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testlz12s4ih',...ibtmux_ul2xtenb', window_name=None, command='print(session.name)', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError __________ test_shell[cli_args1-inputs1-env1-{SESSION_NAME}-cli_cmd1] __________ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-Llibtmux_test93b8hova', 'libtmux_x89_ifh6', '-c', 'print(session.name)'] inputs = [], expected_output = '{SESSION_NAME}', env = {} server = session = Session($1 libtmux_x89_ifh6) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args1_inputs1_e1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafbc49a0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafbc45b0> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_test93b8hova',...libtmux_x89_ifh6', window_name=None, command='print(session.name)', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _______________ test_shell[cli_args2-inputs2-env2-True-cli_cmd0] _______________ cli_cmd = ['shell'] cli_args = ['shell', '-Llibtmux_test20f5nx6z', 'libtmux_ctm6uk4o', 'my_window', '-c', 'print(server.has_session(session.name))'] inputs = [], expected_output = 'True', env = {} server = session = Session($1 libtmux_ctm6uk4o) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args2_inputs2_e0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafa7a1d0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafa79f90> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_test20f5nx6z',...me='my_window', command='print(server.has_session(session.name))', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _______________ test_shell[cli_args2-inputs2-env2-True-cli_cmd1] _______________ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-Llibtmux_testco6237u9', 'libtmux_u7wplgbi', 'my_window', '-c', ...] inputs = [], expected_output = 'True', env = {} server = session = Session($1 libtmux_u7wplgbi) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args2_inputs2_e1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafba1e10> capsys = <_pytest.capture.CaptureFixture object at 0x3fafba1bd0> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testco6237u9',...ame='my_window', command='print(server.has_session(session.name))', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError __________ test_shell[cli_args3-inputs3-env3-{WINDOW_NAME}-cli_cmd0] ___________ cli_cmd = ['shell'] cli_args = ['shell', '-Llibtmux_testjg_hqzpx', 'libtmux_8oqfwaph', 'my_window', '-c', 'print(window.name)'] inputs = [], expected_output = '{WINDOW_NAME}', env = {} server = session = Session($1 libtmux_8oqfwaph) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args3_inputs3_e0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafb280a0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafb28670> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testjg_hqzpx',..._8oqfwaph', window_name='my_window', command='print(window.name)', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError __________ test_shell[cli_args3-inputs3-env3-{WINDOW_NAME}-cli_cmd1] ___________ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-Llibtmux_testj9nrch6i', 'libtmux_wcs0854r', 'my_window', '-c', ...] inputs = [], expected_output = '{WINDOW_NAME}', env = {} server = session = Session($1 libtmux_wcs0854r) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args3_inputs3_e1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafc7ad40> capsys = <_pytest.capture.CaptureFixture object at 0x3fafc78820> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testj9nrch6i',...x_wcs0854r', window_name='my_window', command='print(window.name)', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError ____________ test_shell[cli_args4-inputs4-env4-{PANE_ID}-cli_cmd0] _____________ cli_cmd = ['shell'] cli_args = ['shell', '-Llibtmux_testx3l5d6yi', 'libtmux_ivom7bjs', 'my_window', '-c', 'print(pane.id)'] inputs = [], expected_output = '{PANE_ID}', env = {} server = session = Session($1 libtmux_ivom7bjs) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args4_inputs4_e0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafa5a5f0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafa5b8b0> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testx3l5d6yi',...tmux_ivom7bjs', window_name='my_window', command='print(pane.id)', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError ____________ test_shell[cli_args4-inputs4-env4-{PANE_ID}-cli_cmd1] _____________ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-Llibtmux_test8r6d1og9', 'libtmux_wnyqv5b8', 'my_window', '-c', ...] inputs = [], expected_output = '{PANE_ID}', env = {} server = session = Session($1 libtmux_wnyqv5b8) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args4_inputs4_e1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafdd99f0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafdda8c0> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_test8r6d1og9',...btmux_wnyqv5b8', window_name='my_window', command='print(pane.id)', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError ____________ test_shell[cli_args5-inputs5-env5-{PANE_ID}-cli_cmd0] _____________ cli_cmd = ['shell'] cli_args = ['shell', '-Llibtmux_testojkzylvf', '-c', 'print(pane.id)'] inputs = [], expected_output = '{PANE_ID}', env = {'TMUX_PANE': '{PANE_ID}'} server = session = Session($1 libtmux_v4158t6s) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args5_inputs5_e0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafa50190> capsys = <_pytest.capture.CaptureFixture object at 0x3fafa51300> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testojkzylvf',...t', session_name=None, window_name=None, command='print(pane.id)', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError ____________ test_shell[cli_args5-inputs5-env5-{PANE_ID}-cli_cmd1] _____________ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-Llibtmux_testpki60yre', '-c', 'print(pane.id)'] inputs = [], expected_output = '{PANE_ID}', env = {'TMUX_PANE': '{PANE_ID}'} server = session = Session($1 libtmux_4y3_jb70) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_cli_args5_inputs5_e1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafbdcb20> capsys = <_pytest.capture.CaptureFixture object at 0x3fafbdf610> @pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]]) @pytest.mark.parametrize( "cli_args,inputs,env,expected_output", [ ( ["-L{SOCKET_NAME}", "-c", "print(str(server.socket_name))"], [], {}, "{SERVER_SOCKET_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "-c", "print(session.name)", ], [], {}, "{SESSION_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(server.has_session(session.name))", ], [], {}, "True", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(window.name)", ], [], {}, "{WINDOW_NAME}", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "{WINDOW_NAME}", "-c", "print(pane.id)", ], [], {}, "{PANE_ID}", ), ( [ "-L{SOCKET_NAME}", "-c", "print(pane.id)", ], [], {"TMUX_PANE": "{PANE_ID}"}, "{PANE_ID}", ), ], ) def test_shell( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], expected_output: str, env: t.Dict[str, str], server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:567: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testpki60yre',...xt', session_name=None, window_name=None, command='print(pane.id)', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _ test_shell_target_missing[cli_args0-inputs0-env0-template_ctx0-CalledProcessError-.*DoesNotExist.*-cli_cmd0] _ cli_cmd = ['shell'] cli_args = ['shell', '-LDoesNotExist', '-c', 'print(str(server.socket_name))'] inputs = [], env = {} template_ctx = {'SESSION_NAME': 'libtmux_0ob_u3gw', 'SOCKET_NAME': 'libtmux_tests3nuj682', 'WINDOW_NAME': 'my_window'} exception = message = '.*DoesNotExist.*', socket_name = 'tmuxp_testjy3q5vip' server = session = Session($1 libtmux_0ob_u3gw) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_target_missing_cli_0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafc7a770> capsys = <_pytest.capture.CaptureFixture object at 0x3fafba1090> @pytest.mark.parametrize( "cli_cmd", [ ["shell"], ["shell", "--pdb"], ], ) @pytest.mark.parametrize( "cli_args,inputs,env,template_ctx,exception,message", [ ( ["-LDoesNotExist", "-c", "print(str(server.socket_name))"], [], {}, {}, subprocess.CalledProcessError, r".*DoesNotExist.*", ), ( [ "-L{SOCKET_NAME}", "nonexistant_session", "-c", "print(str(server.socket_name))", ], [], {}, {"session_name": "nonexistant_session"}, exc.TmuxpException, "Session not found: nonexistant_session", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "nonexistant_window", "-c", "print(str(server.socket_name))", ], [], {}, {"window_name": "nonexistant_window"}, exc.TmuxpException, "Window not found: {WINDOW_NAME}", ), ], ) def test_shell_target_missing( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], env: t.Dict[t.Any, t.Any], template_ctx: t.Dict[str, str], exception: t.Union[ t.Type[exc.TmuxpException], t.Type[subprocess.CalledProcessError] ], message: str, socket_name: str, server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert server.socket_name is not None assert session.name is not None template_ctx.update( dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=template_ctx.get("window_name", window_name), ) ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) if exception is not None: with pytest.raises(exception, match=message.format(**template_ctx)): > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:660: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='DoesNotExist', socket_...=None, window_name=None, command='print(str(server.socket_name))', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _ test_shell_target_missing[cli_args0-inputs0-env0-template_ctx0-CalledProcessError-.*DoesNotExist.*-cli_cmd1] _ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-LDoesNotExist', '-c', 'print(str(server.socket_name))'] inputs = [], env = {} template_ctx = {'SESSION_NAME': 'libtmux_s1dh_kfl', 'SOCKET_NAME': 'libtmux_test5so7crqx', 'WINDOW_NAME': 'my_window'} exception = message = '.*DoesNotExist.*', socket_name = 'tmuxp_test0dwoh9q5' server = session = Session($1 libtmux_s1dh_kfl) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_target_missing_cli_1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafa849a0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafa85cc0> @pytest.mark.parametrize( "cli_cmd", [ ["shell"], ["shell", "--pdb"], ], ) @pytest.mark.parametrize( "cli_args,inputs,env,template_ctx,exception,message", [ ( ["-LDoesNotExist", "-c", "print(str(server.socket_name))"], [], {}, {}, subprocess.CalledProcessError, r".*DoesNotExist.*", ), ( [ "-L{SOCKET_NAME}", "nonexistant_session", "-c", "print(str(server.socket_name))", ], [], {}, {"session_name": "nonexistant_session"}, exc.TmuxpException, "Session not found: nonexistant_session", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "nonexistant_window", "-c", "print(str(server.socket_name))", ], [], {}, {"window_name": "nonexistant_window"}, exc.TmuxpException, "Window not found: {WINDOW_NAME}", ), ], ) def test_shell_target_missing( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], env: t.Dict[t.Any, t.Any], template_ctx: t.Dict[str, str], exception: t.Union[ t.Type[exc.TmuxpException], t.Type[subprocess.CalledProcessError] ], message: str, socket_name: str, server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert server.socket_name is not None assert session.name is not None template_ctx.update( dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=template_ctx.get("window_name", window_name), ) ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) if exception is not None: with pytest.raises(exception, match=message.format(**template_ctx)): > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:660: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='DoesNotExist', socket_...e=None, window_name=None, command='print(str(server.socket_name))', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _ test_shell_target_missing[cli_args1-inputs1-env1-template_ctx1-TmuxpException-Session not found: nonexistant_session-cli_cmd0] _ cli_cmd = ['shell'] cli_args = ['shell', '-Llibtmux_testq2algbh6', 'nonexistant_session', '-c', 'print(str(server.socket_name))'] inputs = [], env = {} template_ctx = {'SESSION_NAME': 'libtmux_l_6bz2wh', 'SOCKET_NAME': 'libtmux_testq2algbh6', 'WINDOW_NAME': 'my_window', 'session_name': 'nonexistant_session'} exception = message = 'Session not found: nonexistant_session' socket_name = 'tmuxp_test9f36ai05' server = session = Session($1 libtmux_l_6bz2wh) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_target_missing_cli_2') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafba0340> capsys = <_pytest.capture.CaptureFixture object at 0x3fafba3c10> @pytest.mark.parametrize( "cli_cmd", [ ["shell"], ["shell", "--pdb"], ], ) @pytest.mark.parametrize( "cli_args,inputs,env,template_ctx,exception,message", [ ( ["-LDoesNotExist", "-c", "print(str(server.socket_name))"], [], {}, {}, subprocess.CalledProcessError, r".*DoesNotExist.*", ), ( [ "-L{SOCKET_NAME}", "nonexistant_session", "-c", "print(str(server.socket_name))", ], [], {}, {"session_name": "nonexistant_session"}, exc.TmuxpException, "Session not found: nonexistant_session", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "nonexistant_window", "-c", "print(str(server.socket_name))", ], [], {}, {"window_name": "nonexistant_window"}, exc.TmuxpException, "Window not found: {WINDOW_NAME}", ), ], ) def test_shell_target_missing( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], env: t.Dict[t.Any, t.Any], template_ctx: t.Dict[str, str], exception: t.Union[ t.Type[exc.TmuxpException], t.Type[subprocess.CalledProcessError] ], message: str, socket_name: str, server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert server.socket_name is not None assert session.name is not None template_ctx.update( dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=template_ctx.get("window_name", window_name), ) ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) if exception is not None: with pytest.raises(exception, match=message.format(**template_ctx)): > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:660: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testq2algbh6',...sion', window_name=None, command='print(str(server.socket_name))', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _ test_shell_target_missing[cli_args1-inputs1-env1-template_ctx1-TmuxpException-Session not found: nonexistant_session-cli_cmd1] _ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-Llibtmux_testksal8pz2', 'nonexistant_session', '-c', 'print(str(server.socket_name))'] inputs = [], env = {} template_ctx = {'SESSION_NAME': 'libtmux_mi4_36ly', 'SOCKET_NAME': 'libtmux_testksal8pz2', 'WINDOW_NAME': 'my_window', 'session_name': 'nonexistant_session'} exception = message = 'Session not found: nonexistant_session' socket_name = 'tmuxp_testq5ar8knc' server = session = Session($1 libtmux_mi4_36ly) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_target_missing_cli_3') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafbdc400> capsys = <_pytest.capture.CaptureFixture object at 0x3fafa86950> @pytest.mark.parametrize( "cli_cmd", [ ["shell"], ["shell", "--pdb"], ], ) @pytest.mark.parametrize( "cli_args,inputs,env,template_ctx,exception,message", [ ( ["-LDoesNotExist", "-c", "print(str(server.socket_name))"], [], {}, {}, subprocess.CalledProcessError, r".*DoesNotExist.*", ), ( [ "-L{SOCKET_NAME}", "nonexistant_session", "-c", "print(str(server.socket_name))", ], [], {}, {"session_name": "nonexistant_session"}, exc.TmuxpException, "Session not found: nonexistant_session", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "nonexistant_window", "-c", "print(str(server.socket_name))", ], [], {}, {"window_name": "nonexistant_window"}, exc.TmuxpException, "Window not found: {WINDOW_NAME}", ), ], ) def test_shell_target_missing( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], env: t.Dict[t.Any, t.Any], template_ctx: t.Dict[str, str], exception: t.Union[ t.Type[exc.TmuxpException], t.Type[subprocess.CalledProcessError] ], message: str, socket_name: str, server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert server.socket_name is not None assert session.name is not None template_ctx.update( dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=template_ctx.get("window_name", window_name), ) ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) if exception is not None: with pytest.raises(exception, match=message.format(**template_ctx)): > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:660: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testksal8pz2',...ssion', window_name=None, command='print(str(server.socket_name))', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _ test_shell_target_missing[cli_args2-inputs2-env2-template_ctx2-TmuxpException-Window not found: {WINDOW_NAME}-cli_cmd0] _ cli_cmd = ['shell'] cli_args = ['shell', '-Llibtmux_test4x8urdmc', 'libtmux_ab2nfj5l', 'nonexistant_window', '-c', 'print(str(server.socket_name))'] inputs = [], env = {} template_ctx = {'SESSION_NAME': 'libtmux_ab2nfj5l', 'SOCKET_NAME': 'libtmux_test4x8urdmc', 'WINDOW_NAME': 'nonexistant_window', 'window_name': 'nonexistant_window'} exception = message = 'Window not found: {WINDOW_NAME}', socket_name = 'tmuxp_testiyavnw3z' server = session = Session($1 libtmux_ab2nfj5l) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_target_missing_cli_4') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafb71f30> capsys = <_pytest.capture.CaptureFixture object at 0x3fafb73b50> @pytest.mark.parametrize( "cli_cmd", [ ["shell"], ["shell", "--pdb"], ], ) @pytest.mark.parametrize( "cli_args,inputs,env,template_ctx,exception,message", [ ( ["-LDoesNotExist", "-c", "print(str(server.socket_name))"], [], {}, {}, subprocess.CalledProcessError, r".*DoesNotExist.*", ), ( [ "-L{SOCKET_NAME}", "nonexistant_session", "-c", "print(str(server.socket_name))", ], [], {}, {"session_name": "nonexistant_session"}, exc.TmuxpException, "Session not found: nonexistant_session", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "nonexistant_window", "-c", "print(str(server.socket_name))", ], [], {}, {"window_name": "nonexistant_window"}, exc.TmuxpException, "Window not found: {WINDOW_NAME}", ), ], ) def test_shell_target_missing( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], env: t.Dict[t.Any, t.Any], template_ctx: t.Dict[str, str], exception: t.Union[ t.Type[exc.TmuxpException], t.Type[subprocess.CalledProcessError] ], message: str, socket_name: str, server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert server.socket_name is not None assert session.name is not None template_ctx.update( dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=template_ctx.get("window_name", window_name), ) ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) if exception is not None: with pytest.raises(exception, match=message.format(**template_ctx)): > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:660: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_test4x8urdmc',...me='nonexistant_window', command='print(str(server.socket_name))', shell='best', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _ test_shell_target_missing[cli_args2-inputs2-env2-template_ctx2-TmuxpException-Window not found: {WINDOW_NAME}-cli_cmd1] _ cli_cmd = ['shell', '--pdb'] cli_args = ['shell', '--pdb', '-Llibtmux_test43d67gsq', 'libtmux_u14bknc_', 'nonexistant_window', '-c', ...] inputs = [], env = {} template_ctx = {'SESSION_NAME': 'libtmux_u14bknc_', 'SOCKET_NAME': 'libtmux_test43d67gsq', 'WINDOW_NAME': 'nonexistant_window', 'window_name': 'nonexistant_window'} exception = message = 'Window not found: {WINDOW_NAME}', socket_name = 'tmuxp_testki06fyw5' server = session = Session($1 libtmux_u14bknc_) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_target_missing_cli_5') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafbdc940> capsys = <_pytest.capture.CaptureFixture object at 0x3fafbdf040> @pytest.mark.parametrize( "cli_cmd", [ ["shell"], ["shell", "--pdb"], ], ) @pytest.mark.parametrize( "cli_args,inputs,env,template_ctx,exception,message", [ ( ["-LDoesNotExist", "-c", "print(str(server.socket_name))"], [], {}, {}, subprocess.CalledProcessError, r".*DoesNotExist.*", ), ( [ "-L{SOCKET_NAME}", "nonexistant_session", "-c", "print(str(server.socket_name))", ], [], {}, {"session_name": "nonexistant_session"}, exc.TmuxpException, "Session not found: nonexistant_session", ), ( [ "-L{SOCKET_NAME}", "{SESSION_NAME}", "nonexistant_window", "-c", "print(str(server.socket_name))", ], [], {}, {"window_name": "nonexistant_window"}, exc.TmuxpException, "Window not found: {WINDOW_NAME}", ), ], ) def test_shell_target_missing( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], env: t.Dict[t.Any, t.Any], template_ctx: t.Dict[str, str], exception: t.Union[ t.Type[exc.TmuxpException], t.Type[subprocess.CalledProcessError] ], message: str, socket_name: str, server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert server.socket_name is not None assert session.name is not None template_ctx.update( dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=template_ctx.get("window_name", window_name), ) ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) if exception is not None: with pytest.raises(exception, match=message.format(**template_ctx)): > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:660: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_test43d67gsq',...ame='nonexistant_window', command='print(str(server.socket_name))', shell='pdb', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _ test_shell_interactive[cli_args0-inputs0-env0-(InteractiveConsole)-cli_cmd0] _ cli_cmd = ['shell', '--code'] cli_args = ['shell', '--code', '-Llibtmux_testh349rz8n'], inputs = [], env = {} message = '(InteractiveConsole)' server = session = Session($1 libtmux_kjd38w9s) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_interactive_cli_arg0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafc06b60> capsys = <_pytest.capture.CaptureFixture object at 0x3fafc050f0> @pytest.mark.parametrize( "cli_cmd", [ # ['shell'], # ['shell', '--pdb'), ["shell", "--code"], # ['shell', '--bpython'], # ['shell', '--ptipython'], # ['shell', '--ptpython'], # ['shell', '--ipython'], ], ) @pytest.mark.parametrize( "cli_args,inputs,env,message", [ ( [ "-L{SOCKET_NAME}", ], [], {}, "(InteractiveConsole)", ), ( [ "-L{SOCKET_NAME}", ], [], {"PANE_ID": "{PANE_ID}"}, "(InteractiveConsole)", ), ], ) def test_shell_interactive( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], env: t.Dict[str, str], message: str, server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) monkeypatch.setattr("sys.stdin", io.StringIO("exit()\r")) try: > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:735: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_testh349rz8n',...file='log.txt', session_name=None, window_name=None, command=None, shell='code', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError _ test_shell_interactive[cli_args1-inputs1-env1-(InteractiveConsole)-cli_cmd0] _ cli_cmd = ['shell', '--code'] cli_args = ['shell', '--code', '-Llibtmux_teste9fwsby7'], inputs = [] env = {'PANE_ID': '{PANE_ID}'}, message = '(InteractiveConsole)' server = session = Session($1 libtmux_g5bhmx90) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_shell_interactive_cli_arg1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafcc60b0> capsys = <_pytest.capture.CaptureFixture object at 0x3fafa501f0> @pytest.mark.parametrize( "cli_cmd", [ # ['shell'], # ['shell', '--pdb'), ["shell", "--code"], # ['shell', '--bpython'], # ['shell', '--ptipython'], # ['shell', '--ptpython'], # ['shell', '--ipython'], ], ) @pytest.mark.parametrize( "cli_args,inputs,env,message", [ ( [ "-L{SOCKET_NAME}", ], [], {}, "(InteractiveConsole)", ), ( [ "-L{SOCKET_NAME}", ], [], {"PANE_ID": "{PANE_ID}"}, "(InteractiveConsole)", ), ], ) def test_shell_interactive( cli_cmd: t.List[str], cli_args: t.List[str], inputs: t.List[t.Any], env: t.Dict[str, str], message: str, server: "Server", session: Session, tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) window_name = "my_window" window = session.new_window(window_name=window_name) window.split_window() assert window.attached_pane is not None template_ctx = dict( SOCKET_NAME=server.socket_name, SESSION_NAME=session.name, WINDOW_NAME=window_name, PANE_ID=window.attached_pane.id, SERVER_SOCKET_NAME=server.socket_name, ) cli_args = cli_cmd + [cli_arg.format(**template_ctx) for cli_arg in cli_args] for k, v in env.items(): monkeypatch.setenv(k, v.format(**template_ctx)) monkeypatch.chdir(tmp_path) monkeypatch.setattr("sys.stdin", io.StringIO("exit()\r")) try: > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:735: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:139: in cli command_shell( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIShellNamespace(log_level='info', subparser_name='shell', workspace_files=['.'], socket_name='libtmux_teste9fwsby7',...file='log.txt', session_name=None, window_name=None, command=None, shell='code', use_pythonrc=False, use_vi_mode=False) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_shell( args: CLIShellNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Launch python shell for tmux server, session, window and pane. Priority given to loaded session/window/pane objects: - session_name and window_name arguments - current shell: envvar ``TMUX_PANE`` for determining window and session - :attr:`libtmux.Server.attached_sessions`, :attr:`libtmux.Session.attached_window`, :attr:`libtmux.Window.attached_pane` """ # If inside a server, detect socket_path env_tmux = os.getenv("TMUX") if env_tmux is not None and isinstance(env_tmux, str): env_socket_path = pathlib.Path(env_tmux.split(",")[0]) if ( env_socket_path.exists() and args.socket_path is None and args.socket_name is None ): args.socket_path = str(env_socket_path) server = Server(socket_name=args.socket_name, socket_path=args.socket_path) > server.raise_if_dead() E AttributeError: 'Server' object has no attribute 'raise_if_dead' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/shell.py:157: AttributeError ________________________ test_freeze[cli_args0-inputs0] ________________________ self = Pane(%1 Window(@1 0:bash, Session($1 myfrozensession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_id' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: server = cli_args = ['freeze', 'myfrozensession'], inputs = ['y\n', './la.yaml\n', 'y\n'] tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_freeze_cli_args0_inputs0_0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafa7b730> @pytest.mark.parametrize( "cli_args,inputs", [ (["freeze", "myfrozensession"], ["y\n", "./la.yaml\n", "y\n"]), ( # Exists ["freeze", "myfrozensession"], ["y\n", "./exists.yaml\n", "./la.yaml\n", "y\n"], ), ( # Imply current session if not entered ["freeze"], ["y\n", "./la.yaml\n", "y\n"], ), (["freeze"], ["y\n", "./exists.yaml\n", "./la.yaml\n", "y\n"]), # Exists ], ) def test_freeze( server: "Server", cli_args: t.List[str], inputs: t.List[str], tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) exists_yaml = tmp_path / "exists.yaml" exists_yaml.touch() server.new_session(session_name="myfirstsession") server.new_session(session_name="myfrozensession") # Assign an active pane to the session second_session = server.sessions[1] > first_pane_on_second_session_id = second_session.windows[0].panes[0].pane_id tests/test_cli.py:982: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%1 Window(@1 0:bash, Session($1 myfrozensession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_id. Did you mean: '_pane_id'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ________________________ test_freeze[cli_args1-inputs1] ________________________ self = Pane(%1 Window(@1 0:bash, Session($1 myfrozensession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_id' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: server = cli_args = ['freeze', 'myfrozensession'] inputs = ['y\n', './exists.yaml\n', './la.yaml\n', 'y\n'] tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_freeze_cli_args1_inputs1_0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafa5b220> @pytest.mark.parametrize( "cli_args,inputs", [ (["freeze", "myfrozensession"], ["y\n", "./la.yaml\n", "y\n"]), ( # Exists ["freeze", "myfrozensession"], ["y\n", "./exists.yaml\n", "./la.yaml\n", "y\n"], ), ( # Imply current session if not entered ["freeze"], ["y\n", "./la.yaml\n", "y\n"], ), (["freeze"], ["y\n", "./exists.yaml\n", "./la.yaml\n", "y\n"]), # Exists ], ) def test_freeze( server: "Server", cli_args: t.List[str], inputs: t.List[str], tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) exists_yaml = tmp_path / "exists.yaml" exists_yaml.touch() server.new_session(session_name="myfirstsession") server.new_session(session_name="myfrozensession") # Assign an active pane to the session second_session = server.sessions[1] > first_pane_on_second_session_id = second_session.windows[0].panes[0].pane_id tests/test_cli.py:982: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%1 Window(@1 0:bash, Session($1 myfrozensession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_id. Did you mean: '_pane_id'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ________________________ test_freeze[cli_args2-inputs2] ________________________ self = Pane(%1 Window(@1 0:bash, Session($1 myfrozensession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_id' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: server = , cli_args = ['freeze'] inputs = ['y\n', './la.yaml\n', 'y\n'] tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_freeze_cli_args2_inputs2_0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafb28940> @pytest.mark.parametrize( "cli_args,inputs", [ (["freeze", "myfrozensession"], ["y\n", "./la.yaml\n", "y\n"]), ( # Exists ["freeze", "myfrozensession"], ["y\n", "./exists.yaml\n", "./la.yaml\n", "y\n"], ), ( # Imply current session if not entered ["freeze"], ["y\n", "./la.yaml\n", "y\n"], ), (["freeze"], ["y\n", "./exists.yaml\n", "./la.yaml\n", "y\n"]), # Exists ], ) def test_freeze( server: "Server", cli_args: t.List[str], inputs: t.List[str], tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) exists_yaml = tmp_path / "exists.yaml" exists_yaml.touch() server.new_session(session_name="myfirstsession") server.new_session(session_name="myfrozensession") # Assign an active pane to the session second_session = server.sessions[1] > first_pane_on_second_session_id = second_session.windows[0].panes[0].pane_id tests/test_cli.py:982: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%1 Window(@1 0:bash, Session($1 myfrozensession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_id. Did you mean: '_pane_id'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ________________________ test_freeze[cli_args3-inputs3] ________________________ self = Pane(%1 Window(@1 0:bash, Session($1 myfrozensession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_id' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: server = , cli_args = ['freeze'] inputs = ['y\n', './exists.yaml\n', './la.yaml\n', 'y\n'] tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_freeze_cli_args3_inputs3_0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafddace0> @pytest.mark.parametrize( "cli_args,inputs", [ (["freeze", "myfrozensession"], ["y\n", "./la.yaml\n", "y\n"]), ( # Exists ["freeze", "myfrozensession"], ["y\n", "./exists.yaml\n", "./la.yaml\n", "y\n"], ), ( # Imply current session if not entered ["freeze"], ["y\n", "./la.yaml\n", "y\n"], ), (["freeze"], ["y\n", "./exists.yaml\n", "./la.yaml\n", "y\n"]), # Exists ], ) def test_freeze( server: "Server", cli_args: t.List[str], inputs: t.List[str], tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) exists_yaml = tmp_path / "exists.yaml" exists_yaml.touch() server.new_session(session_name="myfirstsession") server.new_session(session_name="myfrozensession") # Assign an active pane to the session second_session = server.sessions[1] > first_pane_on_second_session_id = second_session.windows[0].panes[0].pane_id tests/test_cli.py:982: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%1 Window(@1 0:bash, Session($1 myfrozensession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_id. Did you mean: '_pane_id'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ___________________ test_freeze_overwrite[cli_args0-inputs0] ___________________ server = cli_args = ['freeze', 'mysession', '--force', '-L', 'libtmux_testckdthlsg'] inputs = ['\n', '\n', 'y\n', './exists.yaml\n', 'y\n'] tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_freeze_overwrite_cli_args0') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafd4eef0> @pytest.mark.parametrize( "cli_args,inputs", [ ( # Overwrite ["freeze", "mysession", "--force"], ["\n", "\n", "y\n", "./exists.yaml\n", "y\n"], ), ( # Imply current session if not entered ["freeze", "--force"], ["\n", "\n", "y\n", "./exists.yaml\n", "y\n"], ), ], ) def test_freeze_overwrite( server: "Server", cli_args: t.List[str], inputs: t.List[str], tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) exists_yaml = tmp_path / "exists.yaml" exists_yaml.touch() server.new_session(session_name="mysession") monkeypatch.chdir(tmp_path) # Use tmux server (socket name) used in the test assert server.socket_name is not None cli_args = cli_args + ["-L", server.socket_name] monkeypatch.setattr("sys.stdin", io.StringIO("".join(inputs))) try: > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:1039: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:173: in cli command_freeze( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = CLIFreezeNamespace(log_level='info', subparser_name='freeze', workspace_files=['.'], socket_name='libtmux_testckdthlsg...tor at 0x3faff29ea0>, import_subparser_name='tmuxinator', workspace_format=None, save_to=None, quiet=False, force=True) parser = ArgumentParser(prog='tmuxp', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) def command_freeze( args: CLIFreezeNamespace, parser: t.Optional[argparse.ArgumentParser] = None, ) -> None: """Snapshot a tmux session into a tmuxp workspace. If SESSION_NAME is provided, snapshot that session. Otherwise, use the current session.""" server = Server(socket_name=args.socket_name, socket_path=args.socket_path) try: if args.session_name: > session = server.sessions.get(session_name=args.session_name, default=None) E AttributeError: 'list' object has no attribute 'get' /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/freeze.py:103: AttributeError ___________________ test_freeze_overwrite[cli_args1-inputs1] ___________________ self = Session($0 mysession), key = 'session_name' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'session_session_name' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: server = cli_args = ['freeze', '--force', '-L', 'libtmux_testoyi3_kh1'] inputs = ['\n', '\n', 'y\n', './exists.yaml\n', 'y\n'] tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_freeze_overwrite_cli_args1') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3faf9e10c0> @pytest.mark.parametrize( "cli_args,inputs", [ ( # Overwrite ["freeze", "mysession", "--force"], ["\n", "\n", "y\n", "./exists.yaml\n", "y\n"], ), ( # Imply current session if not entered ["freeze", "--force"], ["\n", "\n", "y\n", "./exists.yaml\n", "y\n"], ), ], ) def test_freeze_overwrite( server: "Server", cli_args: t.List[str], inputs: t.List[str], tmp_path: pathlib.Path, monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setenv("HOME", str(tmp_path)) exists_yaml = tmp_path / "exists.yaml" exists_yaml.touch() server.new_session(session_name="mysession") monkeypatch.chdir(tmp_path) # Use tmux server (socket name) used in the test assert server.socket_name is not None cli_args = cli_args + ["-L", server.socket_name] monkeypatch.setattr("sys.stdin", io.StringIO("".join(inputs))) try: > cli.cli(cli_args) /build/tmuxp/src/tmuxp-1.22.0/tests/test_cli.py:1039: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/__init__.py:173: in cli command_freeze( /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/cli/freeze.py:113: in command_freeze frozen_workspace = freezer.freeze(session) /build/tmuxp/src/tmuxp-1.22.0/test_dir/usr/lib/python3.10/site-packages/tmuxp/workspace/freezer.py:56: in freeze sconf = {"session_name": session.session_name, "windows": []} _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Session($0 mysession), key = 'session_name' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property session_name /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError _________________ test_load_append_windows_to_current_session __________________ server = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafbb1060> def test_load_append_windows_to_current_session( server: "Server", monkeypatch: pytest.MonkeyPatch ) -> None: yaml_config = test_utils.read_workspace_file("workspace/builder/two_pane.yaml") sconfig = ConfigReader._load(format="yaml", content=yaml_config) builder = WorkspaceBuilder(sconf=sconfig, server=server) builder.build() assert len(server.sessions) == 1 > assert len(server.windows) == 3 E AttributeError: 'Server' object has no attribute 'windows'. Did you mean: '_windows'? tests/test_cli.py:1367: AttributeError __________ test_get_session_should_default_to_local_attached_session ___________ self = Pane(%1 Window(@1 1:bash, Session($1 mysecondsession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_id' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: server = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafe4e3e0> def test_get_session_should_default_to_local_attached_session(server, monkeypatch): server.new_session(session_name="myfirstsession") second_session = server.new_session(session_name="mysecondsession") # Assign an active pane to the session > first_pane_on_second_session_id = second_session.windows[0].panes[0].pane_id tests/test_util.py:57: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%1 Window(@1 1:bash, Session($1 mysecondsession))), key = 'pane_id' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_id. Did you mean: '_pane_id'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ____________________________ test_focus_pane_index _____________________________ self = Pane(%3 Window(@2 1:focused window, Session($1 libtmux_aczlgjhn))) key = 'pane_id' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_id' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_aczlgjhn) def test_focus_pane_index(session): workspace = ConfigReader._from_file( test_utils.get_workspace_file("workspace/builder/focus_and_pane.yaml") ) workspace = loader.expand(workspace) workspace = loader.trickle(workspace) builder = WorkspaceBuilder(sconf=workspace) > builder.build(session=session) tests/workspace/test_builder.py:79: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ test_dir/usr/lib/python3.10/site-packages/tmuxp/workspace/builder.py:277: in build for p, pconf in self.iter_create_panes(w, wconf): test_dir/usr/lib/python3.10/site-packages/tmuxp/workspace/builder.py:492: in iter_create_panes assert p.pane_id is not None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%3 Window(@2 1:focused window, Session($1 libtmux_aczlgjhn))) key = 'pane_id' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_id. Did you mean: '_pane_id'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ____________________________ test_blank_pane_count _____________________________ self = Pane(%11 Window(@5 4:Blank with options, Session($1 libtmux_dm08ahy7))) key = 'pane_id' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_id' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_dm08ahy7) def test_blank_pane_count(session): """:todo: Verify blank panes of various types build into workspaces.""" yaml_workspace_file = EXAMPLE_PATH / "blank-panes.yaml" test_config = ConfigReader._from_file(yaml_workspace_file) test_config = loader.expand(test_config) builder = WorkspaceBuilder(sconf=test_config) > builder.build(session=session) tests/workspace/test_builder.py:471: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ test_dir/usr/lib/python3.10/site-packages/tmuxp/workspace/builder.py:277: in build for p, pconf in self.iter_create_panes(w, wconf): test_dir/usr/lib/python3.10/site-packages/tmuxp/workspace/builder.py:492: in iter_create_panes assert p.pane_id is not None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%11 Window(@5 4:Blank with options, Session($1 libtmux_dm08ahy7))) key = 'pane_id' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_id. Did you mean: '_pane_id'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError _____________________________ test_start_directory _____________________________ self = Pane(%2 Window(@2 1:supposed to be /usr/bin, Session($1 libtmux_z832lasc))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_current_path' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_z832lasc) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_start_directory0') def test_start_directory(session, tmp_path: pathlib.Path): test_dir = tmp_path / "foo bar" test_dir.mkdir() yaml_workspace = test_utils.read_workspace_file( "workspace/builder/start_directory.yaml" ) test_config = yaml_workspace.format(TEST_DIR=test_dir) workspace = ConfigReader._load(format="yaml", content=test_config) workspace = loader.expand(workspace) workspace = loader.trickle(workspace) builder = WorkspaceBuilder(sconf=workspace) builder.build(session=session) assert session == builder.session dirs = ["/usr/bin", "/dev", str(test_dir), "/usr", "/usr"] for path, window in zip(dirs, session.windows): for p in window.panes: def f(): pane_path = p.pane_current_path return path in pane_path or pane_path == path # handle case with OS X adding /private/ to /tmp/ paths > assert retry_until(f) tests/workspace/test_builder.py:515: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.10/site-packages/libtmux/test.py:95: in retry_until while not fun(): tests/workspace/test_builder.py:511: in f pane_path = p.pane_current_path _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%2 Window(@2 1:supposed to be /usr/bin, Session($1 libtmux_z832lasc))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_current_path /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ________________________ test_start_directory_relative _________________________ self = Pane(%2 Window(@2 1:supposed to be /usr/bin, Session($1 libtmux_ikglw0ed))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_current_path' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_ikglw0ed) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_start_directory_relative0') def test_start_directory_relative(session, tmp_path: pathlib.Path): """Same as above test, but with relative start directory, mimicking loading it from a location of project file. Like:: $ tmuxp load ~/workspace/myproject/.tmuxp.yaml instead of:: $ cd ~/workspace/myproject/.tmuxp.yaml $ tmuxp load . """ yaml_workspace = test_utils.read_workspace_file( "workspace/builder/start_directory_relative.yaml" ) test_dir = tmp_path / "foo bar" test_dir.mkdir() config_dir = tmp_path / "testRelConfigDir" config_dir.mkdir() test_config = yaml_workspace.format(TEST_DIR=test_dir) workspace = ConfigReader._load(format="yaml", content=test_config) # the second argument of os.getcwd() mimics the behavior # the CLI loader will do, but it passes in the workspace file's location. workspace = loader.expand(workspace, config_dir) workspace = loader.trickle(workspace) assert os.path.exists(config_dir) assert os.path.exists(test_dir) builder = WorkspaceBuilder(sconf=workspace) builder.build(session=session) assert session == builder.session dirs = ["/usr/bin", "/dev", str(test_dir), str(config_dir), str(config_dir)] for path, window in zip(dirs, session.windows): for p in window.panes: def f(): # Handle case where directories resolve to /private/ in OSX pane_path = p.pane_current_path return path in pane_path or pane_path == path > assert retry_until(f) tests/workspace/test_builder.py:564: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.10/site-packages/libtmux/test.py:95: in retry_until while not fun(): tests/workspace/test_builder.py:561: in f pane_path = p.pane_current_path _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%2 Window(@2 1:supposed to be /usr/bin, Session($1 libtmux_ikglw0ed))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_current_path /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError _______________________________ test_pane_order ________________________________ self = Pane(%2 Window(@2 1:bash, Session($1 libtmux_q_u4h2s3))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_current_path' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_q_u4h2s3) def test_pane_order(session): """Pane ordering based on position in config and ``pane_index``. Regression test for https://github.com/tmux-python/tmuxp/issues/15. """ yaml_workspace = test_utils.read_workspace_file( "workspace/builder/pane_ordering.yaml" ).format(HOME=os.path.realpath(os.path.expanduser("~"))) # test order of `panes` (and pane_index) above against pane_dirs pane_paths = [ "/usr/bin", "/usr", "/etc", os.path.realpath(os.path.expanduser("~")), ] workspace = ConfigReader._load(format="yaml", content=yaml_workspace) workspace = loader.expand(workspace) workspace = loader.trickle(workspace) builder = WorkspaceBuilder(sconf=workspace) window_count = len(session.windows) # current window count assert len(session.windows) == window_count for w, wconf in builder.iter_create_windows(session): for p in builder.iter_create_panes(w, wconf): w.select_layout("tiled") # fix glitch with pane size assert len(session.windows) == window_count assert isinstance(w, Window) assert len(session.windows) == window_count window_count += 1 for w in session.windows: pane_base_index = w.show_window_option("pane-base-index", g=True) for p_index, p in enumerate(w.panes, start=pane_base_index): assert int(p_index) == int(p.index) # pane-base-index start at base-index, pane_paths always start # at 0 since python list. pane_path = pane_paths[p_index - pane_base_index] def f(): return p.pane_current_path == pane_path > assert retry_until(f) tests/workspace/test_builder.py:637: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.10/site-packages/libtmux/test.py:95: in retry_until while not fun(): tests/workspace/test_builder.py:635: in f return p.pane_current_path == pane_path _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%2 Window(@2 1:bash, Session($1 libtmux_q_u4h2s3))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_current_path /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ______________________________ test_window_index _______________________________ self = Window(@2 1:zero, Session($1 libtmux_r6hyb09g)), key = 'window_name' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'window_window_name' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_r6hyb09g) def test_window_index(session): 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} workspace = ConfigReader._from_file( test_utils.get_workspace_file("workspace/builder/window_index.yaml") ) workspace = loader.expand(workspace) workspace = loader.trickle(workspace) builder = WorkspaceBuilder(sconf=workspace) for window, _ in builder.iter_create_windows(session): > expected_index = name_index_map[window.window_name] tests/workspace/test_builder.py:654: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Window(@2 1:zero, Session($1 libtmux_r6hyb09g)), key = 'window_name' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property window_name /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ________________________ test_find_current_active_pane _________________________ self = Pane(%5 Window(@5 1:first, Session($1 sample_two_windows))) key = 'pane_id' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_id' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: server = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3fafcccdc0> def test_find_current_active_pane(server, monkeypatch): workspace = ConfigReader._from_file( path=test_utils.get_workspace_file("workspace/builder/three_windows.yaml") ) builder = WorkspaceBuilder(sconf=workspace, server=server) builder.build() workspace = ConfigReader._from_file( path=test_utils.get_workspace_file("workspace/builder/two_windows.yaml") ) builder = WorkspaceBuilder(sconf=workspace, server=server) builder.build() assert len(server.sessions) == 2 # Assign an active pane to the session second_session = server.sessions[1] > first_pane_on_second_session_id = second_session.windows[0].panes[0].pane_id tests/workspace/test_builder.py:925: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%5 Window(@5 1:first, Session($1 sample_two_windows))) key = 'pane_id' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_id. Did you mean: '_pane_id'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError _______________________ test_first_pane_start_directory ________________________ self = Pane(%2 Window(@2 1:bash, Session($1 libtmux_5xb9ws30))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_current_path' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_5xb9ws30) tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_first_pane_start_director0') def test_first_pane_start_directory(session, tmp_path: pathlib.Path): yaml_workspace = test_utils.get_workspace_file( "workspace/builder/first_pane_start_directory.yaml" ) workspace = ConfigReader._from_file(yaml_workspace) workspace = loader.expand(workspace) workspace = loader.trickle(workspace) builder = WorkspaceBuilder(sconf=workspace) builder.build(session=session) assert session == builder.session dirs = ["/usr", "/etc"] assert session.windows window = session.windows[0] for path, p in zip(dirs, window.panes): def f(): pane_path = p.pane_current_path return path in pane_path or pane_path == path # handle case with OS X adding /private/ to /tmp/ paths > assert retry_until(f) tests/workspace/test_builder.py:1229: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.10/site-packages/libtmux/test.py:95: in retry_until while not fun(): tests/workspace/test_builder.py:1225: in f pane_path = p.pane_current_path _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%2 Window(@2 1:bash, Session($1 libtmux_5xb9ws30))) key = 'pane_current_path' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_current_path /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError _________________________ test_layout_main_horizontal __________________________ self = Pane(%2 Window(@2 1:test, Session($1 libtmux_569dh3ne))) key = 'pane_height' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'pane_pane_height' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_569dh3ne) @pytest.mark.skipif( has_lt_version("2.9"), reason="needs option introduced in tmux >= 2.9" ) def test_layout_main_horizontal(session): yaml_workspace = test_utils.get_workspace_file("workspace/builder/three_pane.yaml") workspace = ConfigReader._from_file(path=yaml_workspace) builder = WorkspaceBuilder(sconf=workspace) builder.build(session=session) assert session.windows window = session.windows[0] assert len(window.panes) == 3 main_horizontal_pane, *panes = window.panes def height(p): return int(p.pane_height) def width(p): return int(p.pane_width) > main_horizontal_pane_height = height(main_horizontal_pane) tests/workspace/test_builder.py:1254: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/workspace/test_builder.py:1249: in height return int(p.pane_height) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Pane(%2 Window(@2 1:test, Session($1 libtmux_569dh3ne))) key = 'pane_height' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property pane_height. Did you mean: 'set_height'? /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError ______________________________ test_freeze_config ______________________________ self = Session($1 libtmux_pw5igv7s), key = 'session_name' def __getattr__(self, key: str) -> str: try: > val = self._info[self.formatter_prefix + key] E KeyError: 'session_session_name' /usr/lib/python3.10/site-packages/libtmux/common.py:322: KeyError During handling of the above exception, another exception occurred: session = Session($1 libtmux_pw5igv7s) def test_freeze_config(session): session_config = ConfigReader._from_file( test_utils.get_workspace_file("workspace/freezer/sample_workspace.yaml") ) builder = WorkspaceBuilder(sconf=session_config) builder.build(session=session) assert session == builder.session time.sleep(0.50) session = session > new_config = freezer.freeze(session) tests/workspace/test_freezer.py:28: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ test_dir/usr/lib/python3.10/site-packages/tmuxp/workspace/freezer.py:56: in freeze sconf = {"session_name": session.session_name, "windows": []} _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Session($1 libtmux_pw5igv7s), key = 'session_name' def __getattr__(self, key: str) -> str: try: val = self._info[self.formatter_prefix + key] assert val is not None assert isinstance(val, str) return val except KeyError: > raise AttributeError(f"{self.__class__} has no property {key}") E AttributeError: has no property session_name /usr/lib/python3.10/site-packages/libtmux/common.py:327: AttributeError =========================== short test summary info ============================ FAILED tests/test_cli.py::test_load_symlinked_workspace - AttributeError: ERROR: A failure occurred in check().  Aborting... ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/felix0/build receiving incremental file list tmuxp-1.22.0-1-riscv64-build.log tmuxp-1.22.0-1-riscv64-check.log sent 62 bytes received 15,042 bytes 10,069.33 bytes/sec total size is 188,127 speedup is 12.46