From 4316aa08a4acffcf49e329fe0403691b2e083ff7 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 21 May 2016 23:10:28 -0500 Subject: [PATCH] convert window test to functional, add server/session test fixtures --- tests/conftest.py | 62 +++++++++ tests/helpers.py | 3 - tests/test_pane.py | 64 +++++----- tests/test_window.py | 295 ++++++++++++++++++++----------------------- 4 files changed, 233 insertions(+), 191 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index b45d511e666..15d40576a9d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,67 @@ +# -*- coding: utf-8 -*- + import pytest +import logging +from tmuxp import exc +from tmuxp.server import Server + +from .helpers import get_test_session_name, TEST_SESSION_PREFIX + +logger = logging.getLogger(__name__) + + +@pytest.fixture(scope='session') +def t(): + t = Server() + t.socket_name = 'tmuxp_test' + + return t + + +@pytest.fixture(scope='function') +def session(t): + session_name = 'tmuxp' + if not t.has_session(session_name): + t.cmd('new-session', '-d', '-s', session_name) + + # find current sessions prefixed with tmuxp + old_test_sessions = [ + s.get('session_name') for s in t._sessions + if s.get('session_name').startswith(TEST_SESSION_PREFIX) + ] + + TEST_SESSION_NAME = get_test_session_name(server=t) + + try: + session = t.new_session( + session_name=TEST_SESSION_NAME, + ) + except exc.TmuxpException as e: + raise e + + """ + Make sure that tmuxp can :ref:`test_builder_visually` and switches to + the newly created session for that testcase. + """ + try: + t.switch_client(session.get('session_id')) + pass + except exc.TmuxpException as e: + # t.attach_session(session.get('session_id')) + pass + + for old_test_session in old_test_sessions: + logger.debug( + 'Old test test session %s found. Killing it.' % + old_test_session + ) + t.kill_session(old_test_session) + assert TEST_SESSION_NAME == session.get('session_name') + assert TEST_SESSION_NAME != 'tmuxp' + + return session + @pytest.fixture() def tmpdir(tmpdir_factory): diff --git a/tests/helpers.py b/tests/helpers.py index 674567adac0..ea3302372cb 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -18,8 +18,6 @@ import tempfile from contextlib import contextmanager -import pytest - from tmuxp import exc from tmuxp.server import Server @@ -148,7 +146,6 @@ class TmuxTestCase(TestCase): def temp_session(self, session_name=None): return temp_session(self.server, session_name) - @pytest.fixture(autouse=True) def setUp(self): """Run bootstrap if :attr:`~.session` is not set.""" diff --git a/tests/test_pane.py b/tests/test_pane.py index 382c4ac6ea4..52bfb932d88 100644 --- a/tests/test_pane.py +++ b/tests/test_pane.py @@ -6,50 +6,48 @@ import logging -from .helpers import TmuxTestCase - logger = logging.getLogger(__name__) -class ResizeTest(TmuxTestCase): +def test_resize_pane(session): + """ Test Pane.resize_pane(). """ + + window = session.attached_window() + window.rename_window('test_resize_pane') - def test_resize_pane(self): - """ Test Pane.resize_pane(). """ + pane1 = window.attached_pane() + pane1_height = pane1['pane_height'] + window.split_window() - window = self.session.attached_window() - window.rename_window('test_resize_pane') + pane1.resize_pane(height=4) + assert pane1['pane_height'] != pane1_height + assert int(pane1['pane_height']) == 4 - pane1 = window.attached_pane() - pane1_height = pane1['pane_height'] - window.split_window() + pane1.resize_pane(height=3) + assert int(pane1['pane_height']) == 3 - pane1.resize_pane(height=4) - assert pane1['pane_height'] != pane1_height - assert int(pane1['pane_height']) == 4 - pane1.resize_pane(height=3) - assert int(pane1['pane_height']) == 3 +def test_set_height(session): + window = session.new_window(window_name='test_set_height') + window.split_window() + pane1 = window.attached_pane() + pane1_height = pane1['pane_height'] - def test_set_height(self): - window = self.session.new_window(window_name='test_set_height') - window.split_window() - pane1 = window.attached_pane() - pane1_height = pane1['pane_height'] + pane1.set_height(2) + assert pane1['pane_height'] != pane1_height + assert int(pane1['pane_height']) == 2 - pane1.set_height(2) - assert pane1['pane_height'] != pane1_height - assert int(pane1['pane_height']) == 2 - def test_set_width(self): - window = self.session.new_window(window_name='test_set_width') - window.split_window() +def test_set_width(session): + window = session.new_window(window_name='test_set_width') + window.split_window() - window.select_layout('main-vertical') - pane1 = window.attached_pane() - pane1_width = pane1['pane_width'] + window.select_layout('main-vertical') + pane1 = window.attached_pane() + pane1_width = pane1['pane_width'] - pane1.set_width(10) - assert pane1['pane_width'] != pane1_width - assert int(pane1['pane_width']) == 10 + pane1.set_width(10) + assert pane1['pane_width'] != pane1_width + assert int(pane1['pane_width']) == 10 - pane1.reset() + pane1.reset() diff --git a/tests/test_window.py b/tests/test_window.py index 47dc52fb38a..d8242336022 100644 --- a/tests/test_window.py +++ b/tests/test_window.py @@ -9,200 +9,185 @@ from tmuxp import Pane, Server, Window -from .helpers import TmuxTestCase logger = logging.getLogger(__name__) -class SelectTest(TmuxTestCase): +def test_select_window(session): + window_count = len(session._windows) + # to do, get option for base-index from tmux + # for now hoever, let's get the index from the first window. + assert window_count == 1 - def test_select_window(self): - window_count = len(self.session._windows) - # to do, get option for base-index from tmux - # for now hoever, let's get the index from the first window. - assert window_count == 1 + window_base_index = int( + session.attached_window().get('window_index')) - window_base_index = int( - self.session.attached_window().get('window_index')) + window = session.new_window(window_name='testing 3') - window = self.session.new_window(window_name='testing 3') + # self.assertEqual(2, + # int(session.attached_window().get('window_index'))) + assert int(window_base_index) + 1 == int(window.get('window_index')) - # self.assertEqual(2, - # int(self.session.attached_window().get('window_index'))) - assert int(window_base_index) + 1 == int(window.get('window_index')) + session.select_window(window_base_index) + assert window_base_index == \ + int(session.attached_window().get('window_index')) - self.session.select_window(window_base_index) - assert window_base_index == \ - int(self.session.attached_window().get('window_index')) + session.select_window('testing 3') + assert int(window_base_index) + 1 == \ + int(session.attached_window().get('window_index')) - self.session.select_window('testing 3') - assert int(window_base_index) + 1 == \ - int(self.session.attached_window().get('window_index')) + assert len(session._windows) == 2 - assert len(self.session._windows) == 2 - -class NewTest(TmuxTestCase): - - def test_zfresh_window_data(self): - - pane_base_index = int( - self.session.attached_window().show_window_option( - 'pane-base-index', g=True - ) +def test_zfresh_window_data(session): + pane_base_index = int( + session.attached_window().show_window_option( + 'pane-base-index', g=True ) - - assert len(self.session.windows) == 1 - - assert len(self.session.attached_window().panes) == 1 - current_windows = len(self.session._windows) - assert self.session.get('session_id') != '@0' - assert current_windows == 1 - - assert len(self.session.attached_window().panes) == 1 - assert isinstance(self.session.server, Server) - # len(self.session.attached_window().panes)) - - assert len(self.session.windows), 1 - assert len(self.session.attached_window().panes) == 1 - for w in self.session.windows: - assert isinstance(w, Window) - window = self.session.attached_window() - assert isinstance(window, Window) - assert len(self.session.attached_window().panes) == 1 - window.split_window() - self.session.attached_window().select_pane(pane_base_index) - self.session.attached_pane().send_keys('cd /srv/www/flaskr') - self.session.attached_window().select_pane(pane_base_index + 1) - self.session.attached_pane().send_keys('source .venv/bin/activate') - self.session.new_window(window_name='second') - current_windows += 1 - assert current_windows == len(self.session._windows) - self.session.new_window(window_name='hey') - current_windows += 1 - assert current_windows == len(self.session._windows) - - self.session.select_window(1) - self.session.kill_window(target_window='hey') - current_windows -= 1 - assert current_windows == len(self.session._windows) - - -class NewTest2(TmuxTestCase): - - def test_newest_pane_data(self): - window = self.session.new_window(window_name='test', attach=True) - assert isinstance(window, Window) - assert len(window.panes) == 1 - window.split_window(attach=True) - - assert len(window.panes) == 2 - # note: the below used to accept -h, removing because split_window now - # has attach as its only argument now - window.split_window(attach=True) - assert len(window.panes) == 3 - - -class NewTest3(TmuxTestCase): - - def test_attached_pane(self): - """Window.attached_window() returns active Pane.""" - - window = self.session.attached_window() # current window - assert isinstance(window.attached_pane(), Pane) - - -class NewTest4(TmuxTestCase): - - def test_split_window(self): - """Window.split_window() splits window, returns new Pane.""" - window_name = 'test split window' - window = self.session.new_window(window_name=window_name, attach=True) - pane = window.split_window() - assert len(window.panes) == 2 - assert isinstance(pane, Pane) - - -class RenameTest(TmuxTestCase): - + ) + + assert len(session.windows) == 1 + + assert len(session.attached_window().panes) == 1 + current_windows = len(session._windows) + assert session.get('session_id') != '@0' + assert current_windows == 1 + + assert len(session.attached_window().panes) == 1 + assert isinstance(session.server, Server) + # len(session.attached_window().panes)) + + assert len(session.windows), 1 + assert len(session.attached_window().panes) == 1 + for w in session.windows: + assert isinstance(w, Window) + window = session.attached_window() + assert isinstance(window, Window) + assert len(session.attached_window().panes) == 1 + window.split_window() + session.attached_window().select_pane(pane_base_index) + session.attached_pane().send_keys('cd /srv/www/flaskr') + session.attached_window().select_pane(pane_base_index + 1) + session.attached_pane().send_keys('source .venv/bin/activate') + session.new_window(window_name='second') + current_windows += 1 + assert current_windows == len(session._windows) + session.new_window(window_name='hey') + current_windows += 1 + assert current_windows == len(session._windows) + + session.select_window(1) + session.kill_window(target_window='hey') + current_windows -= 1 + assert current_windows == len(session._windows) + + +def test_newest_pane_data(session): + window = session.new_window(window_name='test', attach=True) + assert isinstance(window, Window) + assert len(window.panes) == 1 + window.split_window(attach=True) + + assert len(window.panes) == 2 + # note: the below used to accept -h, removing because split_window now + # has attach as its only argument now + window.split_window(attach=True) + assert len(window.panes) == 3 + + +def test_attached_pane(session): + """Window.attached_window() returns active Pane.""" + + window = session.attached_window() # current window + assert isinstance(window.attached_pane(), Pane) + + +def test_split_window(session): + """Window.split_window() splits window, returns new Pane.""" + window_name = 'test split window' + window = session.new_window(window_name=window_name, attach=True) + pane = window.split_window() + assert len(window.panes) == 2 + assert isinstance(pane, Pane) + + +@pytest.mark.parametrize("window_name_before,window_name_after", [ + ('test', 'ha ha ha fjewlkjflwef'), + ('test', 'hello \\ wazzup 0'), +]) +def test_window_rename(session, window_name_before, window_name_after): + """Window.rename_window().""" window_name_before = 'test' window_name_after = 'ha ha ha fjewlkjflwef' - def test_window_rename(self): - """Window.rename_window().""" - self.session.set_option('automatic-rename', 'off') - window = self.session.new_window( - window_name=self.window_name_before, attach=True) + session.set_option('automatic-rename', 'off') + window = session.new_window( + window_name=window_name_before, attach=True) - assert window == self.session.attached_window() - assert window.get('window_name') == self.window_name_before + assert window == session.attached_window() + assert window.get('window_name') == window_name_before - window.rename_window(self.window_name_after) + window.rename_window(window_name_after) - window = self.session.attached_window() + window = session.attached_window() - assert window.get('window_name') == self.window_name_after + assert window.get('window_name') == window_name_after - window = self.session.attached_window() + window = session.attached_window() - assert window.get('window_name') == self.window_name_after + assert window.get('window_name') == window_name_after -class RenameSpacesTest(RenameTest): - window_name_after = 'hello \\ wazzup 0' +def test_kill_window(session): + session.new_window() + # create a second window to not kick out the client. + # there is another way to do this via options too. + w = session.attached_window() -class KillWindow(TmuxTestCase): - - def test_kill_window(self): - self.session.new_window() - # create a second window to not kick out the client. - # there is another way to do this via options too. - - w = self.session.attached_window() + w.get('window_id') + w.kill_window() + with pytest.raises(IndexError): w.get('window_id') - w.kill_window() - with pytest.raises(IndexError): - w.get('window_id') +def test_show_window_options(session): + """Window.show_window_options() returns dict.""" + window = session.new_window(window_name='test_window') + + options = window.show_window_options() + assert isinstance(options, dict) -class Options(TmuxTestCase): - def test_show_window_options(self): - """Window.show_window_options() returns dict.""" - window = self.session.new_window(window_name='test_window') +def test_set_show_window_options(session): + """Set option then Window.show_window_options(key).""" + window = session.new_window(window_name='test_window') - options = window.show_window_options() - assert isinstance(options, dict) + window.set_window_option('main-pane-height', 20) + assert window.show_window_options('main-pane-height') == 20 - def test_set_show_window_options(self): - """Set option then Window.show_window_options(key).""" - window = self.session.new_window(window_name='test_window') + window.set_window_option('main-pane-height', 40) + assert window.show_window_options('main-pane-height') == 40 + assert window.show_window_options()['main-pane-height'] == 40 - window.set_window_option('main-pane-height', 20) - assert window.show_window_options('main-pane-height') == 20 - window.set_window_option('main-pane-height', 40) - assert window.show_window_options('main-pane-height') == 40 - assert window.show_window_options()['main-pane-height'] == 40 +def test_show_window_option(session): + """Set option then Window.show_window_option(key).""" + window = session.new_window(window_name='test_window') - def test_show_window_option(self): - """Set option then Window.show_window_option(key).""" - window = self.session.new_window(window_name='test_window') + window.set_window_option('main-pane-height', 20) + assert window.show_window_option('main-pane-height') == 20 - window.set_window_option('main-pane-height', 20) - assert window.show_window_option('main-pane-height') == 20 + window.set_window_option('main-pane-height', 40) + assert window.show_window_option('main-pane-height') == 40 + assert window.show_window_option('main-pane-height') == 40 - window.set_window_option('main-pane-height', 40) - assert window.show_window_option('main-pane-height') == 40 - assert window.show_window_option('main-pane-height') == 40 - def test_set_window_option_bad(self): - """Window.set_window_option raises ValueError for bad option key.""" +def test_set_window_option_bad(session): + """Window.set_window_option raises ValueError for bad option key.""" - window = self.session.new_window(window_name='test_window') + window = session.new_window(window_name='test_window') - with pytest.raises(ValueError): - window.set_window_option('afewewfew', 43) + with pytest.raises(ValueError): + window.set_window_option('afewewfew', 43)