From 189fd0b8d97f4babc7c0a349842f7efa7fa8af0c Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Fri, 24 Apr 2026 16:49:22 -0300 Subject: Implement MODE, WHO, TOPIC, KICK, NAMES, LIST; fix test hangs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit IRC commands: - MODE: return RPL_UMODEIS (221) for user mode queries, RPL_CHANNELMODEIS (324) + RPL_CREATIONTIME (329) for channel mode queries - WHO: return RPL_WHOREPLY (352) + RPL_ENDOFWHO (315) for channels and nicks - TOPIC: query returns RPL_TOPIC (332) or RPL_NOTOPIC (331); set broadcasts to all channel members - KICK: removes target from channel, notifies all members - NAMES: returns RPL_NAMREPLY (353) + RPL_ENDOFNAMES (366) - LIST: returns RPL_LISTEND (323) Test infrastructure: - Ghost stale connections on pre-registration nick collision: when a new client sends NICK during registration and the nick is held by an existing connection, close the old connection. This prevents irctest hangs where setUp() raises SkipTest without calling tearDown(), leaving ghost connections. - Add PAPOD_IDLE_TIMEOUT env var with SO_TIMEOUT on client sockets (default 5min, acceptance tests use 1.5s) - Store socket reference in client atom for ghost detection Full irctest suite now completes without hanging: 167 passed, 576 failed, 197 skipped (up from 127 with hangs). Unit: 207 assertions, Integration: 21 assertions — all pass. --- tests/acceptance.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'tests') diff --git a/tests/acceptance.sh b/tests/acceptance.sh index 725bd65..b7d8ea0 100755 --- a/tests/acceptance.sh +++ b/tests/acceptance.sh @@ -18,6 +18,7 @@ trap cleanup EXIT PAPOD_TCP_PORT="$PORT" \ PAPOD_SERVER_NAME=My.Little.Server \ +PAPOD_IDLE_TIMEOUT=1500 \ java -client -cp "$CLASSPATH" papod 2>/dev/null & PAPOD_PID=$! -- cgit v1.3