Skip to content

Commit 039885c

Browse files
committed
fix issue with attached panes on unit tests
1 parent c80cfe3 commit 039885c

File tree

5 files changed

+52
-60
lines changed

5 files changed

+52
-60
lines changed

tmuxp/server.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,17 +237,12 @@ def _list_panes(self):
237237
dict((k, v) for k, v in window.items() if v) for window in panes
238238
]
239239

240-
# tmux < 1.8 doesn't have window_id, use window_name
241-
for p in panes:
242-
if not 'window_id' in p:
243-
p['window_id'] = p['window_name']
244-
245-
246240
if self._panes:
247241
# http://stackoverflow.com/a/14465359
248242
self._panes[:] = []
249243

250244
self._panes.extend(panes)
245+
logger.error([p.get('session_id') for p in self._panes])
251246

252247
return self._panes
253248

tmuxp/session.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,13 @@ def kill_window(self, target_window=None):
175175
self.server._update_windows()
176176

177177
def _list_windows(self):
178-
return self.server._update_windows()._windows
178+
windows = self.server._update_windows()._windows
179+
180+
windows = [
181+
w for w in windows if w['session_id'] == self.get('session_id')
182+
]
183+
184+
return windows
179185

180186
@property
181187
def _windows(self):

tmuxp/testsuite/helpers.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,15 @@ def bootstrap():
2727
2828
'''
2929

30-
# session_list = t.sessions
31-
32-
# assert session_list == t.sessions
33-
3430
# find current sessions prefixed with tmuxp
35-
# old_test_sessions = [s.get('session_name') for s in session_list
36-
# if
37-
# s.get('session_name').startswith(TEST_SESSION_PREFIX)]
31+
old_test_sessions = [s.get('session_name') for s in t._sessions
32+
if
33+
s.get('session_name').startswith(TEST_SESSION_PREFIX)]
3834

39-
# other_sessions = [s.get('session_name') for s in session_list
40-
# if not s.get('session_name').startswith(
41-
# TEST_SESSION_PREFIX
42-
# )]
35+
other_sessions = [s.get('session_name') for s in t._sessions
36+
if not s.get('session_name').startswith(
37+
TEST_SESSION_PREFIX
38+
)]
4339

4440
# assert session_list == t.sessions
4541

@@ -59,11 +55,12 @@ def bootstrap():
5955
# t.attach_session(session.get('session_id'))
6056
pass
6157

62-
# for old_test_session in old_test_sessions:
63-
# logger.debug('Old test test session %s found. Killing it.' %
64-
# old_test_session)
65-
# t.kill_session(old_test_session)
58+
for old_test_session in old_test_sessions:
59+
logger.debug('Old test test session %s found. Killing it.' %
60+
old_test_session)
61+
t.kill_session(old_test_session)
6662
assert TEST_SESSION_NAME == session.get('session_name')
63+
assert TEST_SESSION_NAME != 'tmuxp'
6764

6865
return (TEST_SESSION_NAME, session)
6966

@@ -83,7 +80,7 @@ def setup(self):
8380
@classmethod
8481
def setUpClass(cls):
8582
try:
86-
t.tmux('kill-server')
83+
#t.tmux('kill-server')
8784

8885
cls.TEST_SESSION_NAME, cls.session = bootstrap()
8986
# except TmuxNoClientsRunning:
@@ -99,5 +96,5 @@ def setUpClass(cls):
9996

10097
@classmethod
10198
def tearDownClass(cls):
102-
t.tmux('kill-server')
99+
#t.tmux('kill-server')
103100
pass

tmuxp/testsuite/test_window.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,30 @@ class NewTest(TmuxTestCase):
4545

4646
def test_zfresh_window_data(self):
4747
# self.session.select_window(1)
48+
#
49+
logger.error(self.session.attached_window())
50+
logger.error(self.session.attached_window().get('window_name'))
51+
logger.error(self.session.windows)
52+
logger.error(self.session.attached_window().panes)
53+
self.assertEqual(len(self.session.windows), 1)
54+
55+
self.assertEqual(len(self.session.attached_window().panes), 1)
4856
current_windows = len(self.session._windows)
57+
self.assertNotEqual('@0', self.session.get('session_id'))
58+
self.assertEqual(current_windows, 1)
59+
60+
self.assertEqual(len(self.session.attached_window().panes), 1)
4961
self.assertIsInstance(self.session.server, Server)
5062
# len(self.session.attached_window().panes))
63+
64+
self.assertEqual(1, len(self.session.windows))
65+
self.assertEqual(len(self.session.attached_window().panes), 1)
5166
for w in self.session.windows:
5267
self.assertIsInstance(w, Window)
5368
window = self.session.attached_window()
5469
self.assertIsInstance(window, Window)
70+
logger.error(t.sessions)
71+
self.assertEqual(len(self.session.attached_window().panes), 1)
5572
pane = window.split_window()
5673
self.session.attached_window().select_pane(0)
5774
self.session.attached_pane().send_keys('cd /srv/www/flaskr')

tmuxp/window.py

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,9 @@ def __init__(self, session=None, **kwargs):
3636
self.server = self.session.server
3737

3838
if not 'window_id' in kwargs:
39-
if kwargs['window_index']:
40-
self._window_id = kwargs['window_index']
41-
else:
42-
raise ValueError('Window requires a `window_id`')
39+
raise ValueError('Window requires a `window_id`')
4340

44-
if not 'window_index' in kwargs:
45-
raise ValueError('Window requires a `window_index`')
46-
self._window_index = kwargs['window_index']
41+
self._window_id = kwargs['window_id']
4742

4843
#self.server._update_windows()
4944

@@ -60,7 +55,7 @@ def __repr__(self):
6055
def _TMUX(self, *args):
6156

6257
attrs = {
63-
'window_index': self._window_index
58+
'window_id': self._window_id
6459
}
6560

6661
# from https://github.com/serkanyersen/underscore.py
@@ -285,6 +280,8 @@ def split_window(self, attach=True):
285280

286281
#'-t%s' % self.attached_pane().get('pane_id'),
287282
# 2013-10-18 LOOK AT THIS, rm'd it..
283+
logger.error(self.get('session_id'))
284+
logger.error(self.panes)
288285

289286
tmux_args = (
290287
'-t%s' % self.panes[0].get('pane_id'),
@@ -301,33 +298,11 @@ def split_window(self, attach=True):
301298

302299
# tmux < 1.7. This is added in 1.7.
303300
if pane.stderr:
304-
if 'unknown option -- F' in pane.stderr[0]:
305-
tmux_args = (
306-
'-t%s' % self.panes[0].get('pane_id'),
307-
)
308-
if not attach:
309-
tmux_args += ('-d',)
310-
proc = self.tmux(
311-
'split-window',
312-
'-P',
313-
*tmux_args
314-
)
315-
if proc.stderr:
316-
raise Exception(pane.stderr)
317-
318-
pane = proc.stdout[0]
319-
import re
320-
pane_regex = re.compile(r"^(?P<session_name>.*):(?P<window_index>\d*?).(?P<pane_index>\d*?)$")
321-
m = re.match(pane_regex, pane)
322-
pane = m.groupdict()
323-
324-
pane['pane_id'] = pane['pane_index']
325-
326-
#pane = dict(zip(['session_name', 'window_index'], pane[0].split(':')))
327-
328-
# todo, this needs code to find the newest pane created
329-
else:
330-
raise Exception(pane.stderr)
301+
raise Exception(pane.stderr)
302+
if 'pane too small' in pane.stderr:
303+
pass
304+
305+
raise Exception(pane.stderr, self._TMUX, self.panes)
331306
else:
332307
pane = pane.stdout[0]
333308

@@ -357,11 +332,13 @@ def _list_panes(self):
357332
panes = self.server._update_panes()._panes
358333

359334
panes = [
360-
p for p in panes if p['session_name'] == self.get('session_name')
335+
p for p in panes if p['session_id'] == self.get('session_id')
361336
]
337+
logger.error(self.get('session_id'))
362338
panes = [
363339
p for p in panes if p['window_id'] == self.get('window_id')
364340
]
341+
logger.error(self.get('window_id'))
365342
return panes
366343

367344
@property

0 commit comments

Comments
 (0)