Skip to content

Commit 6693d9c

Browse files
committed
midway commit, need test decorators for tmux versions
1 parent e66e77d commit 6693d9c

File tree

4 files changed

+32
-9
lines changed

4 files changed

+32
-9
lines changed

libtmux/exc.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,22 @@ class BadSessionName(LibTmuxException):
3434
pass
3535

3636

37-
class UnknownOption(LibTmuxException):
37+
class OptionError(LibTmuxException):
38+
39+
"""Root error for any error involving invalid, ambiguous or bad options."""
40+
41+
pass
42+
43+
44+
class UnknownOption(OptionError):
3845

3946
"""Option unknown to tmux show-option(s) or show-window-option(s)."""
4047

4148
pass
49+
50+
51+
class InvalidOption(OptionError):
52+
53+
"""Option invalid to tmux, introduced in tmux v2.4."""
54+
55+
pass

libtmux/session.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,9 @@ def set_option(self, option, value, g=False):
358358
error = proc.stderr[0]
359359
if 'unknown option' in error:
360360
raise exc.UnknownOption(error)
361+
elif 'invalid option' in error:
362+
raise exc.InvalidOption(error)
363+
361364
raise ValueError('tmux set-option stderr: %s' % error)
362365

363366
def show_options(self, option=None, g=False):

libtmux/window.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,17 +150,20 @@ def set_window_option(self, option, value):
150150

151151
if isinstance(cmd.stderr, list) and len(cmd.stderr):
152152
error = cmd.stderr[0]
153-
if 'unknown option' in error:
153+
if any(
154+
x in error
155+
for x in ['unknown option', 'invalid option']
156+
):
154157
raise exc.UnknownOption(error)
155158

156159
raise ValueError(
157-
'tmux set-window-option -t%s:%s %s %s\n' % (
160+
'tmux set-window-option -t%s:%s %s %s\n%s' % (
158161
self.get('session_id'),
159162
self.index,
160163
option,
161-
value
162-
) +
163-
cmd.stderr
164+
value,
165+
error
166+
)
164167
)
165168

166169
def show_window_options(self, option=None, g=False):
@@ -224,8 +227,11 @@ def show_window_option(self, option, g=False):
224227
'show-window-options', *tmux_args
225228
)
226229

227-
if len(cmd.stderr) and 'unknown option' in cmd.stderr[0]:
228-
raise exc.UnknownOption(cmd.stderr[0])
230+
if len(cmd.stderr):
231+
if 'unknown option' in cmd.stderr:
232+
raise exc.UnknownOption(cmd.stderr[0])
233+
elif 'invalid option' in cmd.stderr:
234+
raise exc.InvalidOption(cmd.stderr[0])
229235

230236
if not len(cmd.stdout):
231237
return None

tests/test_window.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ def test_set_show_window_options(session):
180180

181181
def test_empty_window_option_returns_None(session):
182182
window = session.new_window(window_name='test_window')
183-
assert window.show_window_option('default-shell') is None
183+
assert window.show_window_option('alternate-screen') is None
184184

185185

186186
def test_show_window_option(session):

0 commit comments

Comments
 (0)