From f37cb8cf1dfc091f80b56855f8088af196955d29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edgar=20Andr=C3=A9s=20Margffoy=20Tuay?= Date: Thu, 31 May 2018 21:03:46 -0500 Subject: [PATCH] Restore test helper function --- spyder_terminal/server/common.py | 2 +- spyder_terminal/server/logic/term_manager.py | 13 ++++++++----- spyder_terminal/server/routes.py | 11 +++++++++++ spyder_terminal/server/websockets/term_ws.py | 1 + 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/spyder_terminal/server/common.py b/spyder_terminal/server/common.py index 63a344fd..22fb6b78 100644 --- a/spyder_terminal/server/common.py +++ b/spyder_terminal/server/common.py @@ -11,7 +11,7 @@ def create_app(shell, close_future=None): """Create and return a tornado Web Application instance.""" settings = {"static_path": os.path.join( os.path.dirname(__file__), "static")} - application = tornado.web.Application(routes.ROUTES, + application = tornado.web.Application(routes.gen_routes(close_future), debug=True, serve_traceback=True, autoreload=True, **settings) diff --git a/spyder_terminal/server/logic/term_manager.py b/spyder_terminal/server/logic/term_manager.py index 59ef9680..42e311c3 100644 --- a/spyder_terminal/server/logic/term_manager.py +++ b/spyder_terminal/server/logic/term_manager.py @@ -59,11 +59,14 @@ def client_disconnected(self, pid, socket): self.log.info("Websocket closed, sending SIGHUP to terminal.") term = self.consoles[pid] term.clients.remove(socket) - if WINDOWS: - term.kill() - self.pty_read(term.ptyproc.fd) - return - term.killpg(signal.SIGHUP) + try: + if WINDOWS: + term.kill() + self.pty_read(term.ptyproc.fd) + return + term.killpg(signal.SIGHUP) + except OSError: + pass del self.consoles[pid] @tornado.gen.coroutine diff --git a/spyder_terminal/server/routes.py b/spyder_terminal/server/routes.py index 24a73267..6043ba74 100644 --- a/spyder_terminal/server/routes.py +++ b/spyder_terminal/server/routes.py @@ -36,3 +36,14 @@ ] ROUTES = REST + WS + WEB + + +def gen_routes(close_future): + """Return a list of HTML redirection routes.""" + if close_future is not None: + ws = [] + for route in WS: + ws.append((route[0], route[1], + dict(close_future=close_future))) + return REST + ws + WEB + return ROUTES diff --git a/spyder_terminal/server/websockets/term_ws.py b/spyder_terminal/server/websockets/term_ws.py index 892ea656..fc46efec 100644 --- a/spyder_terminal/server/websockets/term_ws.py +++ b/spyder_terminal/server/websockets/term_ws.py @@ -40,4 +40,5 @@ def on_pty_read(self, text): self.write_message(text) def on_pty_died(self): + """Close websocket if terminal was closed externally.""" self.close()