Skip to content

Commit 32c1359

Browse files
committed
tests/legacy_api(refactor): Update to verify DeprecatedError is raised
why: Legacy API tests should verify deprecated methods raise exceptions. what: - test_pane.py: Tests resize_pane, select_pane, split_window, get, __getitem__ - test_session.py: Tests attached_window/pane, attach_session, kill_session, get, __getitem__, get_by_id, where, find_where, list_windows, children - test_window.py: Tests split_window, attached_pane, select_window, kill_window, set_window_option, show_window_options, show_window_option, get, __getitem__, get_by_id, where, find_where, list_panes, children - test_server.py: Tests kill_server, get_by_id, where, find_where, list_sessions, children, _sessions, _list_sessions, _list_windows, etc. - test_tmuxobject.py: Tests find_where, where, get_by_id on all objects - test_common.py: Cleaned up, no deprecated API usage
1 parent e11d247 commit 32c1359

File tree

6 files changed

+338
-959
lines changed

6 files changed

+338
-959
lines changed

tests/legacy_api/test_common.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
"""Tests for utility functions in libtmux."""
1+
"""Tests for utility functions in libtmux.
2+
3+
Note: This file tests common utilities, not deprecated APIs.
4+
The tests use the current API.
5+
"""
26

37
from __future__ import annotations
48

tests/legacy_api/test_pane.py

Lines changed: 42 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,65 @@
1-
"""Tests for libtmux Pane object."""
1+
"""Tests for deprecated libtmux Pane APIs.
2+
3+
These tests verify that deprecated methods raise DeprecatedError.
4+
"""
25

36
from __future__ import annotations
47

5-
import logging
6-
import shutil
78
import typing as t
89

9-
if t.TYPE_CHECKING:
10-
from libtmux.session import Session
11-
12-
logger = logging.getLogger(__name__)
13-
14-
15-
def test_resize_pane(session: Session) -> None:
16-
"""Test Pane.resize_pane()."""
17-
window = session.attached_window
18-
window.rename_window("test_resize_pane")
19-
20-
pane1 = window.attached_pane
21-
assert pane1 is not None
22-
pane1_height = pane1["pane_height"]
23-
window.split_window()
10+
import pytest
2411

25-
pane1.resize_pane(height=4)
26-
assert pane1["pane_height"] != pane1_height
27-
assert int(pane1["pane_height"]) == 4
12+
from libtmux.exc import DeprecatedError
2813

29-
pane1.resize_pane(height=3)
30-
assert int(pane1["pane_height"]) == 3
14+
if t.TYPE_CHECKING:
15+
from libtmux.session import Session
3116

3217

33-
def test_send_keys(session: Session) -> None:
34-
"""Verify Pane.send_keys()."""
35-
pane = session.attached_window.attached_pane
18+
def test_resize_pane_raises_deprecated_error(session: Session) -> None:
19+
"""Test Pane.resize_pane() raises DeprecatedError."""
20+
window = session.active_window
21+
pane = window.active_pane
3622
assert pane is not None
37-
pane.send_keys("c-c", literal=True)
3823

39-
pane_contents = "\n".join(pane.cmd("capture-pane", "-p").stdout)
40-
assert "c-c" in pane_contents
24+
with pytest.raises(DeprecatedError, match=r"Pane\.resize_pane\(\) was deprecated"):
25+
pane.resize_pane(height=4)
4126

42-
pane.send_keys("c-a", literal=False)
43-
assert "c-a" not in pane_contents, "should not print to pane"
4427

28+
def test_select_pane_raises_deprecated_error(session: Session) -> None:
29+
"""Test Pane.select_pane() raises DeprecatedError."""
30+
window = session.active_window
31+
pane = window.active_pane
32+
assert pane is not None
4533

46-
def test_set_height(session: Session) -> None:
47-
"""Verify Pane.set_height()."""
48-
window = session.new_window(window_name="test_set_height")
49-
window.split_window()
50-
pane1 = window.attached_pane
51-
assert pane1 is not None
52-
pane1_height = pane1["pane_height"]
53-
54-
pane1.set_height(4)
55-
assert pane1["pane_height"] != pane1_height
56-
assert int(pane1["pane_height"]) == 4
34+
with pytest.raises(DeprecatedError, match=r"Pane\.select_pane\(\) was deprecated"):
35+
pane.select_pane()
5736

5837

59-
def test_set_width(session: Session) -> None:
60-
"""Verify Pane.set_width()."""
61-
window = session.new_window(window_name="test_set_width")
62-
window.split_window()
38+
def test_split_window_raises_deprecated_error(session: Session) -> None:
39+
"""Test Pane.split_window() raises DeprecatedError."""
40+
window = session.active_window
41+
pane = window.active_pane
42+
assert pane is not None
6343

64-
window.select_layout("main-vertical")
65-
pane1 = window.attached_pane
66-
assert pane1 is not None
67-
pane1_width = pane1["pane_width"]
44+
with pytest.raises(DeprecatedError, match=r"Pane\.split_window\(\) was deprecated"):
45+
pane.split_window()
6846

69-
pane1.set_width(10)
70-
assert pane1["pane_width"] != pane1_width
71-
assert int(pane1["pane_width"]) == 10
7247

73-
pane1.reset()
48+
def test_pane_get_raises_deprecated_error(session: Session) -> None:
49+
"""Test Pane.get() raises DeprecatedError."""
50+
window = session.active_window
51+
pane = window.active_pane
52+
assert pane is not None
7453

54+
with pytest.raises(DeprecatedError, match=r"Pane\.get\(\) was deprecated"):
55+
pane.get("pane_id")
7556

76-
def test_capture_pane(session: Session) -> None:
77-
"""Verify Pane.capture_pane()."""
78-
env = shutil.which("env")
79-
assert env is not None, "Cannot find usable `env` in PATH."
8057

81-
session.new_window(
82-
attach=True,
83-
window_name="capture_pane",
84-
window_shell=f"{env} PS1='$ ' sh",
85-
)
86-
pane = session.attached_window.attached_pane
58+
def test_pane_getitem_raises_deprecated_error(session: Session) -> None:
59+
"""Test Pane.__getitem__() raises DeprecatedError."""
60+
window = session.active_window
61+
pane = window.active_pane
8762
assert pane is not None
88-
pane_contents = "\n".join(pane.capture_pane())
89-
assert pane_contents == "$"
90-
pane.send_keys(
91-
r'printf "\n%s\n" "Hello World !"',
92-
literal=True,
93-
suppress_history=False,
94-
)
95-
pane_contents = "\n".join(pane.capture_pane())
96-
assert pane_contents == r'$ printf "\n%s\n" "Hello World !"{}'.format(
97-
"\n\nHello World !\n$",
98-
)
63+
64+
with pytest.raises(DeprecatedError, match=r"Pane\[key\] lookup was deprecated"):
65+
_ = pane["pane_id"]

tests/legacy_api/test_server.py

Lines changed: 67 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,169 +1,97 @@
1-
"""Test for libtmux Server object."""
1+
"""Tests for deprecated libtmux Server APIs.
22
3-
from __future__ import annotations
3+
These tests verify that deprecated methods raise DeprecatedError.
4+
"""
45

5-
import logging
6-
import subprocess
7-
import typing as t
6+
from __future__ import annotations
87

98
import pytest
109

10+
from libtmux.exc import DeprecatedError
1111
from libtmux.server import Server
1212

13-
if t.TYPE_CHECKING:
14-
from libtmux.session import Session
15-
16-
logger = logging.getLogger(__name__)
17-
18-
19-
def test_has_session(server: Server, session: Session) -> None:
20-
"""Server.has_session() returns True if session exists."""
21-
session_name = session.get("session_name")
22-
assert session_name is not None
23-
assert server.has_session(session_name)
24-
assert not server.has_session("asdf2314324321")
25-
26-
27-
def test_socket_name(server: Server) -> None:
28-
"""``-L`` socket_name.
29-
30-
``-L`` socket_name file name of socket. which will be stored in
31-
env TMUX_TMPDIR or /tmp if unset.)
32-
33-
"""
34-
myserver = Server(socket_name="test")
35-
36-
assert myserver.socket_name == "test"
37-
38-
39-
def test_socket_path(server: Server) -> None:
40-
"""``-S`` socket_path (alternative path for server socket)."""
41-
myserver = Server(socket_path="test")
42-
43-
assert myserver.socket_path == "test"
44-
45-
46-
def test_config(server: Server) -> None:
47-
"""``-f`` file for tmux(1) configuration."""
48-
myserver = Server(config_file="test")
49-
assert myserver.config_file == "test"
50-
51-
52-
def test_256_colors(server: Server) -> None:
53-
"""Assert Server respects ``colors=256``."""
54-
myserver = Server(colors=256)
55-
assert myserver.colors == 256
56-
57-
proc = myserver.cmd("list-sessions")
58-
59-
assert "-2" in proc.cmd
60-
assert "-8" not in proc.cmd
61-
62-
63-
def test_88_colors(server: Server) -> None:
64-
"""Assert Server respects ``colors=88``."""
65-
myserver = Server(colors=88)
66-
assert myserver.colors == 88
67-
68-
proc = myserver.cmd("list-sessions")
69-
70-
assert "-8" in proc.cmd
71-
assert "-2" not in proc.cmd
72-
73-
74-
def test_show_environment(server: Server) -> None:
75-
"""Server.show_environment() returns dict."""
76-
vars_ = server.show_environment()
77-
assert isinstance(vars_, dict)
78-
79-
80-
def test_getenv(server: Server, session: Session) -> None:
81-
"""Set environment then Server.show_environment(key)."""
82-
server.set_environment("FOO", "BAR")
83-
assert server.getenv("FOO") == "BAR"
84-
85-
server.set_environment("FOO", "DAR")
86-
assert server.getenv("FOO") == "DAR"
87-
88-
assert server.show_environment()["FOO"] == "DAR"
89-
9013

91-
def test_show_environment_not_set(server: Server) -> None:
92-
"""Unset environment variable returns None."""
93-
assert server.getenv("BAR") is None
14+
def test_kill_server_raises_deprecated_error(server: Server) -> None:
15+
"""Test Server.kill_server() raises DeprecatedError."""
16+
with pytest.raises(
17+
DeprecatedError, match=r"Server\.kill_server\(\) was deprecated"
18+
):
19+
server.kill_server()
9420

9521

96-
def test_new_session(server: Server) -> None:
97-
"""Server.new_session creates and returns valid session."""
98-
mysession = server.new_session("test_new_session")
99-
assert mysession.get("session_name") == "test_new_session"
100-
assert server.has_session("test_new_session")
22+
def test_server_get_by_id_raises_deprecated_error(server: Server) -> None:
23+
"""Test Server.get_by_id() raises DeprecatedError."""
24+
with pytest.raises(DeprecatedError, match=r"Server\.get_by_id\(\) was deprecated"):
25+
server.get_by_id("$0")
10126

10227

103-
def test_new_session_no_name(server: Server) -> None:
104-
"""Server.new_session works with no name."""
105-
first_session = server.new_session()
106-
first_session_name = first_session.get("session_name")
107-
assert first_session_name is not None
108-
assert server.has_session(first_session_name)
28+
def test_server_where_raises_deprecated_error(server: Server) -> None:
29+
"""Test Server.where() raises DeprecatedError."""
30+
with pytest.raises(DeprecatedError, match=r"Server\.where\(\) was deprecated"):
31+
server.where({"session_name": "test"})
10932

110-
expected_session_name = str(int(first_session_name) + 1)
11133

112-
# When a new session is created, it should enumerate
113-
second_session = server.new_session()
114-
second_session_name = second_session.get("session_name")
115-
assert expected_session_name == second_session_name
116-
assert second_session_name is not None
117-
assert server.has_session(second_session_name)
34+
def test_server_find_where_raises_deprecated_error(server: Server) -> None:
35+
"""Test Server.find_where() raises DeprecatedError."""
36+
with pytest.raises(DeprecatedError, match=r"Server\.find_where\(\) was deprecated"):
37+
server.find_where({"session_name": "test"})
11838

11939

120-
def test_new_session_shell(server: Server) -> None:
121-
"""Verify ``Server.new_session`` creates valid session running w/ command."""
122-
cmd = "sleep 1m"
123-
mysession = server.new_session("test_new_session", window_command=cmd)
124-
window = mysession.list_windows()[0]
125-
pane = window.list_panes()[0]
126-
assert mysession.get("session_name") == "test_new_session"
127-
assert server.has_session("test_new_session")
40+
def test_server_list_sessions_raises_deprecated_error(server: Server) -> None:
41+
"""Test Server.list_sessions() raises DeprecatedError."""
42+
with pytest.raises(
43+
DeprecatedError, match=r"Server\.list_sessions\(\) was deprecated"
44+
):
45+
server.list_sessions()
12846

129-
pane_start_command = pane.get("pane_start_command")
130-
assert pane_start_command is not None
13147

132-
assert pane_start_command.replace('"', "") == cmd
48+
def test_server_children_raises_deprecated_error(server: Server) -> None:
49+
"""Test Server.children raises DeprecatedError."""
50+
with pytest.raises(DeprecatedError, match=r"Server\.children was deprecated"):
51+
_ = server.children
13352

13453

135-
def test_no_server_sessions() -> None:
136-
"""Verify ``Server.sessions`` returns empty list without tmux server."""
137-
server = Server(socket_name="test_attached_session_no_server")
138-
assert server.sessions == []
54+
def test_server__sessions_raises_deprecated_error(server: Server) -> None:
55+
"""Test Server._sessions raises DeprecatedError."""
56+
with pytest.raises(DeprecatedError, match=r"Server\._sessions was deprecated"):
57+
_ = server._sessions
13958

14059

141-
def test_no_server_attached_sessions() -> None:
142-
"""Verify ``Server.attached_sessions`` returns empty list without tmux server."""
143-
server = Server(socket_name="test_no_server_attached_sessions")
144-
assert server.attached_sessions == []
60+
def test_server__list_sessions_raises_deprecated_error(server: Server) -> None:
61+
"""Test Server._list_sessions() raises DeprecatedError."""
62+
with pytest.raises(
63+
DeprecatedError, match=r"Server\._list_sessions\(\) was deprecated"
64+
):
65+
server._list_sessions()
14566

14667

147-
def test_no_server_is_alive() -> None:
148-
"""Verify is_alive() returns False without tmux server."""
149-
dead_server = Server(socket_name="test_no_server_is_alive")
150-
assert not dead_server.is_alive()
68+
def test_server__list_windows_raises_deprecated_error(server: Server) -> None:
69+
"""Test Server._list_windows() raises DeprecatedError."""
70+
with pytest.raises(
71+
DeprecatedError, match=r"Server\._list_windows\(\) was deprecated"
72+
):
73+
server._list_windows()
15174

15275

153-
def test_with_server_is_alive(server: Server) -> None:
154-
"""Verify is_alive() returns True when tmux server is alive."""
155-
server.new_session()
156-
assert server.is_alive()
76+
def test_server__update_windows_raises_deprecated_error(server: Server) -> None:
77+
"""Test Server._update_windows() raises DeprecatedError."""
78+
with pytest.raises(
79+
DeprecatedError, match=r"Server\._update_windows\(\) was deprecated"
80+
):
81+
server._update_windows()
15782

15883

159-
def test_raise_if_dead_no_server_raises() -> None:
160-
"""Verify new_session() raises if tmux server is dead."""
161-
dead_server = Server(socket_name="test_attached_session_no_server")
162-
with pytest.raises(subprocess.SubprocessError):
163-
dead_server.raise_if_dead()
84+
def test_server__list_panes_raises_deprecated_error(server: Server) -> None:
85+
"""Test Server._list_panes() raises DeprecatedError."""
86+
with pytest.raises(
87+
DeprecatedError, match=r"Server\._list_panes\(\) was deprecated"
88+
):
89+
server._list_panes()
16490

16591

166-
def test_raise_if_dead_does_not_raise_if_alive(server: Server) -> None:
167-
"""Verify new_session() does not raise if tmux server is alive."""
168-
server.new_session()
169-
server.raise_if_dead()
92+
def test_server__update_panes_raises_deprecated_error(server: Server) -> None:
93+
"""Test Server._update_panes() raises DeprecatedError."""
94+
with pytest.raises(
95+
DeprecatedError, match=r"Server\._update_panes\(\) was deprecated"
96+
):
97+
server._update_panes()

0 commit comments

Comments
 (0)