Beispiel #1
0
def main():
    parser = argparse.ArgumentParser(description='JEP backend providing CMake editing support.')
    parser.add_argument('--version', help='CMake version to be supported, mainly used for completion of built-in commands.', choices=['2.8.12', '3.4'], default='3.4')
    parser.add_argument('--builtin-cmake', help='If specified, built-in CMake commands are part of code completion.', action='store_true')
    parser.add_argument('--builtin-ctest', help='If specified, built-in ctest commands are part of code completion.', action='store_true')
    parser.add_argument('--builtin-deprecated', help='If specified, built-in CMake commands that have been deprecated are part of code completion.', action='store_true')
    args = parser.parse_args()

    backend = Backend([Listener(cmake_version=args.version,
                                builtin_commands=args.builtin_cmake,
                                ctest_commands=args.builtin_ctest,
                                deprecated_commands=args.builtin_deprecated)])
    _logger.info('CMake backend starting up.')
    backend.start()
Beispiel #2
0
def test_bind_and_listen_and_accept_and_disconnect(mock_select_mod, mock_socket_mod, capsys):
    backend = Backend()
    server_socket = mock_socket_mod.socket()

    # mock a connecting frontend:
    mock_select_mod.select = mock.MagicMock(return_value=([server_socket], [], []))
    client_socket = mock.MagicMock()
    server_socket.accept = mock.MagicMock(side_effect=set_backend_state(backend, State.ShutdownPending, [client_socket]))
    backend.start()
    assert backend.state is State.Stopped
    assert server_socket.close.call_count == 1
    assert client_socket.close.call_count == 1

    out, *_ = capsys.readouterr()
    assert 'JEP service, listening on port 9001' in out
Beispiel #3
0
def test_find_server_port(mock_socket_mod):
    # deny binding to any port:
    mock_socket_mod.socket().bind = mock.MagicMock(side_effect=OSError)
    backend = Backend()

    with pytest.raises(NoPortFoundError):
        backend.start()

    assert PORT_RANGE[0] < PORT_RANGE[1], 'At lest one port should be testable.'

    # check if all ports have been tested:
    for port in range(PORT_RANGE[0], PORT_RANGE[1]):
        assert mock.call(('localhost', port)) in mock_socket_mod.socket().bind.call_args_list

    assert backend.state is State.Stopped
Beispiel #4
0
def test_find_server_port(mock_socket_mod):
    # deny binding to any port:
    mock_socket_mod.socket().bind = mock.MagicMock(side_effect=OSError)
    backend = Backend()

    with pytest.raises(NoPortFoundError):
        backend.start()

    assert PORT_RANGE[0] < PORT_RANGE[1], 'At lest one port should be testable.'

    # check if all ports have been tested:
    for port in range(PORT_RANGE[0], PORT_RANGE[1]):
        assert mock.call(
            ('localhost',
             port)) in mock_socket_mod.socket().bind.call_args_list

    assert backend.state is State.Stopped
Beispiel #5
0
def test_bind_and_listen_and_accept_and_disconnect(mock_select_mod,
                                                   mock_socket_mod, capsys):
    backend = Backend()
    server_socket = mock_socket_mod.socket()

    # mock a connecting frontend:
    mock_select_mod.select = mock.MagicMock(return_value=([server_socket], [],
                                                          []))
    client_socket = mock.MagicMock()
    server_socket.accept = mock.MagicMock(side_effect=set_backend_state(
        backend, State.ShutdownPending, [client_socket]))
    backend.start()
    assert backend.state is State.Stopped
    assert server_socket.close.call_count == 1
    assert client_socket.close.call_count == 1

    out, *_ = capsys.readouterr()
    assert 'JEP service, listening on port 9001' in out
        'jep': {
            'handlers': ['console'],
            'propagate': False,
            'level': 'DEBUG'
        }
    },
    'root': {
        'level': 'WARNING',
        'handlers': ['console']
    }
})

_logger = logging.getLogger('jep.backend.sample')


class Listener(FrontendListener):
    def on_shutdown(self, context):
        _logger.info('Received shutdown in listener.')

    def on_completion_request(self, completion_request: CompletionRequest, context):
        context.send_message(CompletionResponse(completion_request.pos,
                                                0,
                                                False,
                                                [CompletionOption('cpltextthatisveryverylongmuchlongerthan', 'Something', 'Something to complete')],
                                                completion_request.token))


b = Backend([Listener()])
b.register_static_syntax('mcmake', os.path.join(moduledir, '../input/syntax/mcmake.tmLanguage'), SyntaxFormatType.textmate, '.mcmake')
b.start()