Esempio n. 1
0
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
Esempio n. 2
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
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
Esempio n. 6
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
Esempio n. 7
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
Esempio n. 8
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
Esempio n. 9
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] == '----------'
Esempio n. 10
0
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
Esempio n. 11
0
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
Esempio n. 12
0
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
Esempio n. 13
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
Esempio n. 14
0
import nf

nf.main()