def test_main_module_all_mock_bad_functionality_backend( fixture_environment, fixture_modules, fixture_python_version, backend, method_mock, python_version): sys_argv = sys.argv sys.argv = [ 'nf', '-d', '--label', 'test_label3_{}'.format(backend), '--backend={}'.format(backend), '' ] import os os.environ['PATH'] = os.path.abspath( 'tests/fake_apps/') + ':' + os.environ['PATH'] fixture_python_version(python_version) if backend == 'ssh' or backend == 'paramiko': os.environ['SSH_CLIENT'] = '127.0.0.1 1234 5678' with pytest.raises(SystemExit) as exit_e: import nf nf.main() if backend == 'ssh' or backend == 'paramiko': del os.environ['SSH_CLIENT'] sys.argv = sys_argv assert exit_e.value.code == 0
def test_main_module_all_mock_backend(fixture_environment, fixture_modules, fixture_python_version, backend, python_version): sys_argv = sys.argv sys.argv = [ 'nf', '-d', '--label', 'test_label1', '--backend={}'.format(backend), '' ] sys.modules[ 'paramiko'].SSHClient.return_value.exec_command.return_value = ( mock.MagicMock(), mock.MagicMock(), mock.MagicMock()) fixture_python_version(python_version) if backend == 'ssh' or backend == 'paramiko': import os os.environ['SSH_CLIENT'] = '127.0.0.1 1234 5678' with pytest.raises(SystemExit) as exit_e: import nf nf.main() # assert exit_e.value.code == 0 # there is a mock (subprocess), so check this is useless if backend == 'ssh' or backend == 'paramiko': del os.environ['SSH_CLIENT'] sys.argv = sys_argv
def test_main_module_all_mock_custom_notification_exit_code( fixture_environment): my_exit_code = 13 sys_argv = sys.argv sys.argv = [ 'nf', '-d', '-p', '--custom_notification_exit_code', str(my_exit_code), '' ] module_backup = {} modules = ['dbus'] for module_name in modules: module_backup[module_name] = sys.modules[ module_name] if module_name in sys.modules else None module_mock = mock.MagicMock() setattr(module_mock, '__spec__', module_mock) sys.modules[module_name] = module_mock with pytest.raises(SystemExit) as exit_e: import nf nf.main() for module_name in modules: if module_backup[module_name] is None: sys.modules.pop(module_name) else: sys.modules[module_name] = module_backup[module_name] sys.argv = sys_argv assert exit_e.value.code == my_exit_code
def test_main_module_all_mock(fixture_environment): sys_argv = sys.argv sys.argv = ['nf', '-d', '-p', ''] module_backup = {} modules = ['dbus', 'shutil', 'distutils.spawn'] for module_name in modules: module_backup[module_name] = sys.modules[ module_name] if module_name in sys.modules else None module_mock = mock.MagicMock() setattr(module_mock, '__spec__', module_mock) if module_name == 'shutil': from collections import namedtuple size = namedtuple("terminal_size", "columns lines") module_mock.get_terminal_size.return_value = size(80, 20) sys.modules[module_name] = module_mock with pytest.raises(SystemExit) as exit_e: import nf nf.main() for module_name in modules: if module_backup[module_name] is None: sys.modules.pop(module_name) else: sys.modules[module_name] = module_backup[module_name] sys.argv = sys_argv assert exit_e.value.code == 0
def test_main_ls_no_notify(fixture_environment): sys_argv = sys.argv sys.argv = ['nf', '-d', '-n', 'ls'] with pytest.raises(SystemExit) as exit_e: import nf nf.main() sys.argv = sys_argv assert exit_e.value.code == 0
def test_main_no_module_shutil(fixture_environment): sys_argv = sys.argv sys.argv = ['nf', '-d', '-p', 'ls'] module_name = 'shutil' module_backup = sys.modules[ module_name] if module_name in sys.modules else None sys.modules[module_name] = None with pytest.raises(SystemExit) as exit_e: import nf nf.main() sys.modules[module_name] = module_backup sys.argv = sys_argv assert exit_e.value.code == 0
def test_main_module_all_mock_bad_import_backend(fixture_environment, fixture_modules, fixture_python_version, backend, python_version): sys_argv = sys.argv sys.argv = [ 'nf', '-d', '--label', 'test_label2', '--backend={}'.format(backend), '' ] fixture_python_version(python_version) with pytest.raises(SystemExit) as exit_e: import nf nf.main() sys.argv = sys_argv assert exit_e.value.code == 0
def test_main_module_all_mock_ctrl_c_mock_signal(fixture_environment): sys_argv = sys.argv sys.argv = ['nf', '-d', '-n', '-p', 'sleep 2'] import os import signal import time import threading pid = os.getpid() def trigger_signal(): time.sleep(1) os.kill(pid, signal.SIGINT) thread = threading.Thread(target=trigger_signal) thread.start() module_backup = {} modules = ['signal'] for module_name in modules: module_backup[module_name] = sys.modules[ module_name] if module_name in sys.modules else None module_mock = mock.MagicMock() setattr(module_mock, '__spec__', module_mock) sys.modules[module_name] = None with pytest.raises(SystemExit) as exit_e: import nf nf.main() for module_name in modules: if module_backup[module_name] is None: sys.modules.pop(module_name) else: sys.modules[module_name] = module_backup[module_name] sys.argv = sys_argv assert exit_e.value.code == 0
def test_main_module_all_mock_save(fixture_environment): with open('.nf', 'w'): pass sys_argv = sys.argv sys.argv = ['nf', '-d', '-s', ''] module_backup = {} modules = ['dbus'] for module_name in modules: module_backup[module_name] = sys.modules[ module_name] if module_name in sys.modules else None module_mock = mock.MagicMock() setattr(module_mock, '__spec__', module_mock) sys.modules[module_name] = module_mock with pytest.raises(SystemExit) as exit_e: import nf nf.main() for module_name in modules: if module_backup[module_name] is None: sys.modules.pop(module_name) else: sys.modules[module_name] = module_backup[module_name] sys.argv = sys_argv assert exit_e.value.code == 0 with open('.nf') as f: line = f.read().splitlines() assert line[0] == '' assert line[1] == 'Exit code: 0' assert line[2][:6] == 'Start ' assert line[3][:6] == 'Stop ' assert line[4][:6] == 'Diff ' assert line[5] == '----------'
def test_main_module_all_mock_ctrl_c(fixture_environment): sys_argv = sys.argv sys.argv = ['nf', '-d', '-n', '-p', 'sleep 2'] import os import signal import time import threading pid = os.getpid() def trigger_signal(): time.sleep(1) os.kill(pid, signal.SIGINT) thread = threading.Thread(target=trigger_signal) thread.start() with pytest.raises(SystemExit): import nf nf.main() sys.argv = sys_argv
def test_main_module_all_mock_custom_notification_text(fixture_environment, capsys): my_text = 'my text' sys_argv = sys.argv sys.argv = ['nf', '-d', '-p', '--custom_notification_text', my_text, ''] module_backup = {} modules = ['dbus'] for module_name in modules: module_backup[module_name] = sys.modules[ module_name] if module_name in sys.modules else None module_mock = mock.MagicMock() setattr(module_mock, '__spec__', module_mock) sys.modules[module_name] = module_mock with pytest.raises(SystemExit) as exit_e: import nf nf.main() captured = capsys.readouterr() for module_name in modules: if module_backup[module_name] is None: sys.modules.pop(module_name) else: sys.modules[module_name] = module_backup[module_name] sys.argv = sys_argv stdout = [ log for log in captured.out.splitlines() if not log.startswith('DEBUG') ] print(captured.out) assert exit_e.value.code == 0 assert stdout[2] == my_text
def test_main_module_dbus_error(fixture_environment): sys_argv = sys.argv sys.argv = ['nf', '-d', '-p', 'ls'] module_name = 'dbus' module_backup = sys.modules[ module_name] if module_name in sys.modules else None class my_dbus: __spec__ = mock.Mock() def SessionBus(self): raise Exception sys.modules[module_name] = my_dbus with pytest.raises(SystemExit) as exit_e: import nf nf.main() sys.modules[module_name] = module_backup sys.argv = sys_argv assert exit_e.value.code == 0
def test_main_module_shutil_cannot_get_terminal_size(fixture_environment): sys_argv = sys.argv sys.argv = ['nf', '-d', '-p', 'ls'] module_name = 'shutil' module_backup = sys.modules[ module_name] if module_name in sys.modules else None class my_shutil: __spec__ = mock.Mock() def get_terminal_size(self, a): raise Exception sys.modules[module_name] = my_shutil with pytest.raises(SystemExit) as exit_e: import nf nf.main() sys.modules[module_name] = module_backup sys.argv = sys_argv assert exit_e.value.code == 0
import nf nf.main()