Replace incorrect uses of NotImplementedByController exception (#161)

This commit is contained in:
Val Lorentz 2022-04-15 16:01:36 +02:00 committed by GitHub
parent 5122c04826
commit 45dd42e682
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 40 additions and 65 deletions

View File

@ -762,16 +762,6 @@ def skipUnlessHasMechanism(
return decorator
def skipUnlessHasSasl(f: Callable[..., _TReturn]) -> Callable[..., _TReturn]:
@functools.wraps(f)
def newf(self: _TSelf, *args: Any, **kwargs: Any) -> _TReturn:
if not self.controller.supported_sasl_mechanisms:
raise runner.NotImplementedByController("SASL")
return f(self, *args, **kwargs)
return newf
def xfailIf(
condition: Callable[..., bool], reason: str
) -> Callable[[Callable[..., _TReturn]], Callable[..., _TReturn]]:

View File

@ -22,7 +22,7 @@ class ChannelCaseSensitivityTestCase(cases.BaseServerTestCase):
self.connectClient("foo")
self.connectClient("bar")
if self.server_support["CASEMAPPING"] != casemapping:
raise runner.NotImplementedByController(
raise runner.ImplementationChoice(
"Casemapping {} not implemented".format(casemapping)
)
self.joinClient(1, name1)
@ -47,7 +47,7 @@ class ChannelCaseSensitivityTestCase(cases.BaseServerTestCase):
self.connectClient("foo")
self.connectClient("bar")
if self.server_support["CASEMAPPING"] != casemapping:
raise runner.NotImplementedByController(
raise runner.ImplementationChoice(
"Casemapping {} not implemented".format(casemapping)
)
self.joinClient(1, name1)

View File

@ -47,7 +47,7 @@ def skip_ngircd(f):
@functools.wraps(f)
def newf(self, *args, **kwargs):
if self.controller.software_name == "ngIRCd":
raise runner.NotImplementedByController("nicks longer 9 characters")
raise runner.OptionalExtensionNotSupported("nicks longer 9 characters")
return f(self, *args, **kwargs)
return newf

View File

@ -5,7 +5,6 @@
import pytest
from irctest import cases
from irctest.basecontrollers import NotImplementedByController
from irctest.irc_utils.junkdrawer import random_name
from irctest.patma import ANYDICT
@ -23,31 +22,18 @@ class EchoMessageTestCase(cases.BaseServerTestCase):
@cases.mark_capabilities("echo-message")
def testEchoMessage(self, command, solo, server_time):
"""<http://ircv3.net/specs/extensions/echo-message-3.2.html>"""
self.addClient()
self.sendLine(1, "CAP LS 302")
capabilities = self.getCapLs(1)
if "echo-message" not in capabilities:
raise NotImplementedByController("echo-message")
if server_time and "server-time" not in capabilities:
raise NotImplementedByController("server-time")
# TODO: check also without this
self.sendLine(
1,
"CAP REQ :echo-message{}".format(" server-time" if server_time else ""),
)
self.getRegistrationMessage(1)
# TODO: Remove this one the trailing space issue is fixed in Charybdis
# and Mammon:
# self.assertMessageMatch(m, command='CAP',
# params=['*', 'ACK', 'echo-message'] +
# (['server-time'] if server_time else []),
# fail_msg='Did not ACK advertised capabilities: {msg}')
self.sendLine(1, "USER f * * :foo")
self.sendLine(1, "NICK baz")
self.sendLine(1, "CAP END")
self.skipToWelcome(1)
self.getMessages(1)
if server_time:
self.connectClient(
"baz",
capabilities=["echo-message", "server-time"],
skip_if_cap_nak=True,
)
else:
self.connectClient(
"baz",
capabilities=["echo-message", "server-time"],
skip_if_cap_nak=True,
)
self.sendLine(1, "JOIN #chan")

View File

@ -22,17 +22,17 @@ def with_xfails(f):
@functools.wraps(f)
def newf(self, command, *args, **kwargs):
if command == "HELP" and self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController(
raise runner.ImplementationChoice(
"fail because Bahamut forwards /HELP to HelpServ (but not /HELPOP)"
)
if self.controller.software_name in ("irc2", "ircu2", "ngIRCd"):
raise runner.NotImplementedByController(
raise runner.ImplementationChoice(
"numerics in reply to /HELP and /HELPOP (uses NOTICE instead)"
)
if self.controller.software_name == "UnrealIRCd":
raise runner.NotImplementedByController(
raise runner.ImplementationChoice(
"fails because Unreal uses custom numerics "
"https://github.com/unrealircd/unrealircd/pull/184"
)

View File

@ -395,7 +395,7 @@ class InviteTestCase(cases.BaseServerTestCase):
self.sendLine(2, "INVITE")
m = self.getMessage(2)
if m.command == ERR_NEEDMOREPARAMS:
raise runner.NotImplementedByController("INVITE with no parameter")
raise runner.OptionalExtensionNotSupported("INVITE with no parameter")
if m.command != "337":
# Hybrid always sends an empty list; so skip this.
self.assertMessageMatch(
@ -419,7 +419,7 @@ class InviteTestCase(cases.BaseServerTestCase):
if "INVEX" in self.server_support:
invex = self.server_support.get("INVEX") or "I"
else:
raise runner.NotImplementedByController("INVEX")
raise runner.IsupportTokenNotSupported("INVEX")
self.sendLine(1, "JOIN #chan")
self.getMessages(1)

View File

@ -16,7 +16,7 @@ class IsupportTestCase(cases.BaseServerTestCase):
self.connectClient("foo")
if "PREFIX" not in self.server_support:
raise runner.NotImplementedByController("PREFIX")
raise runner.IsupportTokenNotSupported("PREFIX")
if self.server_support["PREFIX"] == "":
# "The value is OPTIONAL and when it is not specified indicates that no
@ -80,7 +80,7 @@ class IsupportTestCase(cases.BaseServerTestCase):
self.connectClient("foo")
if "TARGMAX" not in self.server_support:
raise runner.NotImplementedByController("TARGMAX")
raise runner.IsupportTokenNotSupported("TARGMAX")
parts = self.server_support["TARGMAX"].split(",")
for part in parts:

View File

@ -236,7 +236,7 @@ class KickTestCase(cases.BaseServerTestCase):
if item
)
if targmax.get("KICK", "1") == "1":
raise runner.NotImplementedByController("Multi-target KICK")
raise runner.OptionalExtensionNotSupported("Multi-target KICK")
# TODO: check foo is an operator

View File

@ -34,7 +34,7 @@ class LinksTestCase(cases.BaseServerTestCase):
self.sendLine(1, "LINKS")
messages = self.getMessages(1)
if messages[0].command == ERR_UNKNOWNCOMMAND:
raise runner.NotImplementedByController("LINKS")
raise runner.OptionalCommandNotSupported("LINKS")
# Ignore '/LINKS has been disabled' from ircu2
messages = [m for m in messages if m.command != "NOTICE"]
@ -95,7 +95,7 @@ class ServicesLinksTestCase(cases.BaseServerTestCase):
messages = self.getMessages(1)
if messages[0].command == ERR_UNKNOWNCOMMAND:
raise runner.NotImplementedByController("LINKS")
raise runner.OptionalCommandNotSupported("LINKS")
# Ignore '/LINKS has been disabled' from ircu2
messages = [m for m in messages if m.command != "NOTICE"]

View File

@ -2,8 +2,7 @@
`IRCv3 MONITOR <https://ircv3.net/specs/extensions/monitor>`_
"""
from irctest import cases
from irctest.basecontrollers import NotImplementedByController
from irctest import cases, runner
from irctest.client_mock import NoMessageException
from irctest.numerics import (
RPL_ENDOFMONLIST,
@ -17,7 +16,7 @@ from irctest.patma import ANYSTR, StrRe
class MonitorTestCase(cases.BaseServerTestCase):
def check_server_support(self):
if "MONITOR" not in self.server_support:
raise NotImplementedByController("MONITOR")
raise runner.IsupportTokenNotSupported("MONITOR")
def assertMononline(self, client, nick, m=None):
if not m:

View File

@ -68,7 +68,7 @@ class NamesTestCase(cases.BaseServerTestCase):
if item
)
if targmax.get("NAMES", "1") == "1":
raise runner.NotImplementedByController("Multi-target NAMES")
raise runner.OptionalExtensionNotSupported("Multi-target NAMES")
self.sendLine(1, "JOIN #chan1")
self.sendLine(1, "JOIN #chan2")

View File

@ -58,7 +58,7 @@ class RegressionsTestCase(cases.BaseServerTestCase):
@cases.mark_capabilities("message-tags", "batch", "echo-message", "server-time")
def testTagCap(self):
if self.controller.software_name == "UnrealIRCd":
raise runner.NotImplementedByController(
raise runner.ImplementationChoice(
"Arbitrary +draft/reply values (TODO: adapt this test to use real "
"values so their pass Unreal's validation) "
"https://bugs.unrealircd.org/view.php?id=5948"

View File

@ -44,7 +44,7 @@ class WallopsTestCase(cases.BaseServerTestCase):
messages = self.getMessages(1)
if ERR_UNKNOWNCOMMAND in (message.command for message in messages):
raise runner.NotImplementedByController("WALLOPS")
raise runner.OptionalCommandNotSupported("WALLOPS")
for message in messages:
self.assertMessageMatch(
message,
@ -77,7 +77,7 @@ class WallopsTestCase(cases.BaseServerTestCase):
self.sendLine(1, "WALLOPS :hi everyone")
message = self.getMessage(1)
if message.command == ERR_UNKNOWNCOMMAND:
raise runner.NotImplementedByController("WALLOPS")
raise runner.OptionalCommandNotSupported("WALLOPS")
self.assertMessageMatch(
message, command=ERR_NOPRIVILEGES, params=["nick1", ANYSTR]
)

View File

@ -88,7 +88,7 @@ class WhoTestCase(BaseWhoTestCase, cases.BaseServerTestCase):
@cases.mark_specifications("Modern")
def testWhoStar(self):
if self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController("WHO mask")
raise runner.OptionalExtensionNotSupported("WHO mask")
self._init()
@ -119,7 +119,7 @@ class WhoTestCase(BaseWhoTestCase, cases.BaseServerTestCase):
@cases.mark_specifications("Modern")
def testWhoNick(self, mask):
if "*" in mask and self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController("WHO mask")
raise runner.OptionalExtensionNotSupported("WHO mask")
self._init()
@ -149,7 +149,7 @@ class WhoTestCase(BaseWhoTestCase, cases.BaseServerTestCase):
)
def testWhoUsernameRealName(self, mask):
if "*" in mask and self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController("WHO mask")
raise runner.OptionalExtensionNotSupported("WHO mask")
self._init()
@ -202,7 +202,7 @@ class WhoTestCase(BaseWhoTestCase, cases.BaseServerTestCase):
@cases.mark_specifications("Modern")
def testWhoNickAway(self, mask):
if "*" in mask and self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController("WHO mask")
raise runner.OptionalExtensionNotSupported("WHO mask")
self._init()
@ -231,7 +231,7 @@ class WhoTestCase(BaseWhoTestCase, cases.BaseServerTestCase):
@cases.mark_specifications("Modern")
def testWhoNickOper(self, mask):
if "*" in mask and self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController("WHO mask")
raise runner.OptionalExtensionNotSupported("WHO mask")
self._init()
@ -265,7 +265,7 @@ class WhoTestCase(BaseWhoTestCase, cases.BaseServerTestCase):
@cases.mark_specifications("Modern")
def testWhoNickAwayAndOper(self, mask):
if "*" in mask and self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController("WHO mask")
raise runner.OptionalExtensionNotSupported("WHO mask")
self._init()
@ -299,7 +299,7 @@ class WhoTestCase(BaseWhoTestCase, cases.BaseServerTestCase):
@cases.mark_specifications("Modern")
def testWhoChan(self, mask):
if "*" in mask and self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController("WHO mask")
raise runner.OptionalExtensionNotSupported("WHO mask")
self._init()

View File

@ -283,7 +283,7 @@ class WhowasTestCase(cases.BaseServerTestCase):
-- https://github.com/ircdocs/modern-irc/pull/170
"""
if self.controller.software_name == "Bahamut":
raise runner.NotImplementedByController("WHOWAS mask")
raise runner.OptionalExtensionNotSupported("WHOWAS mask")
self._testWhowasMultiple(second_result=True, whowas_command="WHOWAS *ck2")
@ -409,7 +409,7 @@ class WhowasTestCase(cases.BaseServerTestCase):
if item
)
if targmax.get("WHOWAS", "1") == "1":
raise runner.NotImplementedByController("Multi-target WHOWAS")
raise runner.OptionalExtensionNotSupported("Multi-target WHOWAS")
self.connectClient("nick2", ident="ident2")
self.sendLine(2, "QUIT :bye")