Esempio n. 1
0
def test_tcp(patch, magic, keyboard_abort):
    """
    Tests whether starting a tcp server works.
    """
    server = magic()
    if keyboard_abort:
        server.serve_forever.side_effect = KeyboardInterrupt()
    did_exit = False

    class FakeServer:
        def __init__(self, arg_port, cls):
            assert arg_port == ('.addr.', '.port.')
            self.cls = cls

        def __enter__(self):
            LanguageServer.start.assert_not_called()
            tcp_server = self.cls()
            tcp_server.rfile = 'rfile'
            tcp_server.wfile = 'wfile'
            tcp_server.handle()
            return server

        def __exit__(self, a, b, c):
            nonlocal did_exit
            did_exit = True

    patch.init(Workspace)
    patch.object(ConstServiceHub, 'from_json', return_value='ConstServiceHub')

    patch.init(LanguageServer)
    patch.object(LanguageServer, 'start')

    patch('socketserver.TCPServer', FakeServer)
    patch.init(StreamRequestHandler)

    app = App(hub_path='.hub.')
    app.start_tcp_server(addr='.addr.', port='.port.')
    assert FakeServer.allow_reuse_address

    server.serve_forever.assert_called()
    server.server_close.assert_called()
    LanguageServer.__init__.assert_called_with('rfile',
                                               'wfile',
                                               hub='ConstServiceHub')
    LanguageServer.start.assert_called()
    assert did_exit
Esempio n. 2
0
def test_tcp(patch, magic, keyboard_abort):
    """
    Tests whether starting a tcp server works.
    """
    server = magic()
    if keyboard_abort:
        server.serve_forever.side_effect = KeyboardInterrupt()
    did_exit = False

    class FakeServer:
        def __init__(self, arg_port, cls):
            assert arg_port == (".addr.", ".port.")
            self.cls = cls

        def __enter__(self):
            LanguageServer.start.assert_not_called()
            tcp_server = self.cls()
            tcp_server.rfile = "rfile"
            tcp_server.wfile = "wfile"
            tcp_server.handle()
            return server

        def __exit__(self, a, b, c):
            nonlocal did_exit
            did_exit = True

    patch.init(Workspace)
    patch.object(ServiceWrapper,
                 "from_json_file",
                 return_value="ConstServiceHub")

    patch.init(LanguageServer)
    patch.object(LanguageServer, "start")

    patch("socketserver.TCPServer", FakeServer)
    patch.init(StreamRequestHandler)

    app = App(hub_path=".hub.")
    app.start_tcp_server(addr=".addr.", port=".port.")
    assert FakeServer.allow_reuse_address

    server.serve_forever.assert_called()
    server.server_close.assert_called()
    LanguageServer.__init__.assert_called_with(hub="ConstServiceHub")
    LanguageServer.start.assert_called_with("rfile", "wfile")
    assert did_exit