List the missing channel modes in the 004 reply (closes #238)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
The channel-modes parameter of RPL_MYINFO left out modes that each transport's MODE accepts. The IRC listener now sends Himnostv, adding H, i, o and v. The HTTP API now sends Hbiklmnostv, adding H, b and v. Each transport keeps its own list, because they accept different modes. The tests compare the whole parameter, so a missing or extra mode fails them. The README and the schema notes show the new HTTP API list. Model: opus-5-5
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"net"
|
||||
"os"
|
||||
"runtime"
|
||||
"slices"
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
@@ -486,20 +487,20 @@ func TestWelcomeContainsNick(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestMyInfoListsUserModes checks that RPL_MYINFO lists the
|
||||
// user modes o and w, with no empty parameter before the
|
||||
// channel modes.
|
||||
func TestMyInfoListsUserModes(t *testing.T) {
|
||||
// TestMyInfoListsModes checks that RPL_MYINFO lists the user
|
||||
// modes o and w, then the channel modes MODE accepts on the
|
||||
// IRC listener. It compares the whole line, so a missing or
|
||||
// extra mode fails it.
|
||||
func TestMyInfoListsModes(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
env := newTestEnv(t)
|
||||
lines := env.dial(t).register("carol")
|
||||
|
||||
assertContains(
|
||||
t, lines,
|
||||
":test.irc 004 carol test.irc neoirc ow mnst",
|
||||
"RPL_MYINFO with user modes",
|
||||
)
|
||||
want := ":test.irc 004 carol test.irc neoirc ow Himnostv"
|
||||
if !slices.Contains(lines, want) {
|
||||
t.Errorf("no line %q in %v", want, lines)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPingPong(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user