fix multiline tests

This commit is contained in:
Luca Matei Pintilie
2025-11-28 20:30:12 +01:00
committed by mathieui
parent 6993577cbe
commit f2a55c4f27
6 changed files with 11 additions and 17 deletions
+4 -10
View File
@@ -223,7 +223,10 @@ void Bridge::send_channel_message(const Iid& iid, const std::string& body, std::
if (lines.empty())
return ;
if (irc->has_capability("draft/multiline"))
if (irc->has_capability("draft/multiline")
// /me and /mode cannot be multi lined
&& lines[0].substr(0, 5) != "/mode"
&& lines[0].substr(0, 4) != "/me ")
{
std::string uuid;
const auto xmpp_body = this->make_xmpp_body(body);
@@ -277,15 +280,6 @@ void Bridge::send_channel_message(const Iid& iid, const std::string& body, std::
this->xmpp.send_stanza(stanza);
}
};
// MODE can't be multiline. Only check the first line, and discard the rest silently
if (lines[0].substr(0, 5) == "/mode")
{
std::vector<std::string> args = utils::split(body.substr(5), ' ', false);
irc->send_mode_command(iid.get_local(), args);
return; // We do not want to send that back to the
// XMPP user, that’s not a textual message.
}
irc->send_batch(uuid, "draft/multiline", {iid.get_local()}, messages, std::move(mirror_to_all_resources));
return;
}
+1 -1
View File
@@ -1528,7 +1528,7 @@ void IrcClient::process_batch(const std::string& reference_tag)
for (const IrcMessage& message: it->second.second)
{
auto it_tags = message.tags.find("draft/multiline-concat");
if (it_tags == message.tags.end())
if (!body.empty() && it_tags == message.tags.end())
body += "\n" + message.arguments[1];
else
body += message.arguments[1];
@@ -29,7 +29,7 @@ scenario = (
"/message/stable_id:stanza-id[@by='#foo%{irc_server_one}'][@id]"
],
[
"/message[@id][@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='\ncoucou']",
"/message[@id][@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='coucou']",
"/message/stable_id:stanza-id[@by='#foo%{irc_server_one}'][@id]"
]
),
@@ -51,6 +51,6 @@ scenario = (
expect_unordered(
["/message[@from='#foo%{irc_server_one}/{nick_one}'][@id='the-message-id'][@to='{jid_one}/{resource_one}'][@type='groupchat']/body[text()='a\nb\nc']"],
["/message[@from='#foo%{irc_server_one}/{nick_one}'][@id][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='\na\nb\nc']"],
["/message[@from='#foo%{irc_server_one}/{nick_one}'][@id][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='a\nb\nc']"],
)
)
@@ -11,7 +11,7 @@ scenario = (
"/message/stable_id:stanza-id[@by='#foo%{irc_server_one}'][@id]"
],
[
"/message[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='\n/me rit en IRC']",
"/message[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='/me rit en IRC']",
"/message/stable_id:stanza-id[@by='#foo%{irc_server_one}'][@id]"
],
),
+3 -3
View File
@@ -23,14 +23,14 @@ def connection_begin(irc_host, jid, expected_irc_presence=False, fixed_irc_serve
expect_stanza(xpath % ('Connecting to %s:6667 (not encrypted)' % irc_host)),
expect_stanza(xpath % 'Connected to IRC server.'))
if expected_irc_presence:
result += (expect_stanza("/presence[@from='" + irc_host + "@biboumi.localhost']"),)
result += (
expect_stanza("/message/body[text()='irc.localhost: *** Looking up your hostname...']"),
expect_stanza("/message/body[text()='irc.localhost: *** Found your hostname']")
)
if expected_irc_presence:
result += (expect_stanza("/presence[@from='" + irc_host + "@biboumi.localhost']"),)
if login is not None:
result += (expect_stanza("/message/body[text()='irc.localhost: You are now logged in as %s']" % (login,)),)