From 3ebff560174e8166db72163e740fa2fb860df26a Mon Sep 17 00:00:00 2001 From: Jared Miller Date: Sat, 7 Feb 2026 12:20:00 -0500 Subject: [PATCH] Use telnetlib3 readline correctly --- src/mudlib/server.py | 5 ++--- tests/test_server.py | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/mudlib/server.py b/src/mudlib/server.py index d256726..5d0cd9e 100644 --- a/src/mudlib/server.py +++ b/src/mudlib/server.py @@ -4,6 +4,7 @@ import asyncio from typing import cast import telnetlib3 +from telnetlib3.server_shell import readline2 PORT = 6789 @@ -23,9 +24,7 @@ async def shell( _writer.write("mud> ") await _writer.drain() - # readline_async reads char-by-char, handles echo via writer.echo(), - # and supports backspace editing - inp = await telnetlib3.readline_async(reader, writer) + inp = await readline2(reader, writer) if inp is None: break diff --git a/tests/test_server.py b/tests/test_server.py index 557ca13..93d3e1a 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -31,7 +31,7 @@ async def test_shell_greets_and_echoes(): writer.drain = AsyncMock() writer.close = MagicMock() - readline = "mudlib.server.telnetlib3.readline_async" + readline = "mudlib.server.readline2" with patch(readline, new_callable=AsyncMock) as mock_readline: mock_readline.side_effect = ["hello", "quit"] await server.shell(reader, writer) @@ -51,7 +51,7 @@ async def test_shell_handles_eof(): writer.drain = AsyncMock() writer.close = MagicMock() - readline = "mudlib.server.telnetlib3.readline_async" + readline = "mudlib.server.readline2" with patch(readline, new_callable=AsyncMock) as mock_readline: mock_readline.return_value = None await server.shell(reader, writer) @@ -67,7 +67,7 @@ async def test_shell_handles_quit(): writer.drain = AsyncMock() writer.close = MagicMock() - readline = "mudlib.server.telnetlib3.readline_async" + readline = "mudlib.server.readline2" with patch(readline, new_callable=AsyncMock) as mock_readline: mock_readline.return_value = "quit" await server.shell(reader, writer)