From 28b9d8cbfbddf2af64eb46b3912bad5dbd681e1e Mon Sep 17 00:00:00 2001 From: RealKindOne Date: Sun, 23 Aug 2026 15:21:27 -0400 Subject: [PATCH] chansaver: Modernize and add test. --- modules/chansaver.cpp | 9 ++++++--- test/integration/tests/modules.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/modules/chansaver.cpp b/modules/chansaver.cpp index 6a7948ed..1612ba3c 100644 --- a/modules/chansaver.cpp +++ b/modules/chansaver.cpp @@ -64,15 +64,18 @@ class CChanSaverMod : public CModule { } } - void OnJoin(const CNick& Nick, CChan& Channel) override { + void OnJoinMessage(CJoinMessage& Message) override { + const CNick& Nick = Message.GetNick(); + CChan& Channel = *Message.GetChan(); if (!Channel.InConfig() && GetNetwork()->GetIRCNick().NickEquals(Nick.GetNick())) { Channel.SetInConfig(true); } } - void OnPart(const CNick& Nick, CChan& Channel, - const CString& sMessage) override { + void OnPartMessage(CPartMessage& Message) override { + const CNick& Nick = Message.GetNick(); + CChan& Channel = *Message.GetChan(); if (Channel.InConfig() && GetNetwork()->GetIRCNick().NickEquals(Nick.GetNick())) { Channel.SetInConfig(false); diff --git a/test/integration/tests/modules.cpp b/test/integration/tests/modules.cpp index 99ba6b9e..27a74471 100644 --- a/test/integration/tests/modules.cpp +++ b/test/integration/tests/modules.cpp @@ -675,5 +675,29 @@ TEST_F(ZNCTest, BounceDCCModule) { EXPECT_THAT(line2.toStdString(), Not(HasSubstr("3232235521 54321"))); } +TEST_F(ZNCTest, ChanSaverModule) { + auto znc = Run(); + auto ircd = ConnectIRCd(); + auto client = LoginClient(); + + client.Write("PRIVMSG *controlpanel :GetChan InConfig $me $network #test"); + client.ReadUntil("No channels matching [#test] found"); + + client.Write("JOIN #test"); + ircd.Write(":server 001 nick :Hello"); + ircd.ReadUntil("JOIN #test"); + ircd.Write(":nick JOIN :#test"); + + client.Write("PRIVMSG *controlpanel :GetChan InConfig $me $network #test"); + client.ReadUntil("InConfig = true"); + + client.Write("PART #test"); + ircd.ReadUntil("PART #test"); + ircd.Write(":nick PART #test"); + + client.Write("PRIVMSG *controlpanel :GetChan InConfig $me $network #test"); + client.ReadUntil("No channels matching [#test] found"); +} + } // namespace } // namespace znc_inttest