Add a 'services' mark, to allow disabling tests that depend on them.

This commit is contained in:
Valentin Lorentz 2021-07-01 16:58:20 +02:00 committed by Val Lorentz
parent 26a0245a6a
commit 2972706ca6
12 changed files with 18 additions and 21 deletions

View File

@ -57,6 +57,7 @@ CHANNEL_JOIN_FAIL_NUMERICS = frozenset(
# typevar for decorators
TCallable = TypeVar("TCallable", bound=Callable)
TClass = TypeVar("TClass", bound=Type)
# typevar for the client name used by tests (usually int or str)
TClientName = TypeVar("TClientName", bound=Union[Hashable, int])
@ -716,6 +717,11 @@ class OptionalityHelper(Generic[TController]):
return newf
def mark_services(cls: TClass) -> TClass:
cls.run_services = True
return pytest.mark.services(cls) # type: ignore
def mark_specifications(
*specifications_str: str, deprecated: bool = False, strict: bool = False
) -> Callable[[TCallable], TCallable]:

View File

@ -5,9 +5,8 @@
from irctest import cases
@cases.mark_services
class AccountTagTestCase(cases.BaseServerTestCase, cases.OptionalityHelper):
run_services = True
def connectRegisteredClient(self, nick):
self.addClient()
self.sendLine(2, "CAP LS 302")

View File

@ -4,9 +4,8 @@ from irctest.numerics import ERR_NICKNAMEINUSE, RPL_WELCOME
from irctest.patma import ANYSTR, StrRe
@cases.mark_services
class Bouncer(cases.BaseServerTestCase):
run_services = True
@cases.mark_specifications("Ergo")
def testBouncer(self):
"""Test basic bouncer functionality."""

View File

@ -146,7 +146,7 @@ class CapTestCase(cases.BaseServerTestCase, cases.OptionalityHelper):
enabled_caps = set(cap_list.params[2].split())
enabled_caps.discard("cap-notify") # implicitly added by some impls
self.assertEqual(enabled_caps, {cap1, cap2})
self.assertIn("time", cap_list.tags)
self.assertIn("time", cap_list.tags, cap_list)
# remove the server-time cap
self.sendLine(1, f"CAP REQ :-{cap2}")

View File

@ -1180,9 +1180,8 @@ class ModeratedMode(cases.BaseServerTestCase):
)
@cases.mark_services
class RegisteredOnlySpeakMode(cases.BaseServerTestCase):
run_services = True
@cases.mark_specifications("Ergo")
def testRegisteredOnlySpeakMode(self):
self.controller.registerUser(self, "evan", "sesame")

View File

@ -33,9 +33,8 @@ def validate_chathistory_batch(msgs):
return result
@cases.mark_services
class ChathistoryTestCase(cases.BaseServerTestCase):
run_services = True
@staticmethod
def config() -> cases.TestCaseControllerConfig:
return cases.TestCaseControllerConfig(chathistory=True)

View File

@ -2,9 +2,8 @@ from irctest import cases
from irctest.numerics import ERR_NICKNAMEINUSE, RPL_WELCOME
@cases.mark_services
class ConfusablesTestCase(cases.BaseServerTestCase):
run_services = True
@staticmethod
def config() -> cases.TestCaseControllerConfig:
return cases.TestCaseControllerConfig(

View File

@ -5,9 +5,8 @@
from irctest import cases
@cases.mark_services
class MetadataTestCase(cases.BaseServerTestCase, cases.OptionalityHelper):
run_services = True
def connectRegisteredClient(self, nick):
self.addClient()
self.sendLine(2, "CAP LS 302")

View File

@ -4,16 +4,14 @@ from irctest import cases
from irctest.patma import ANYSTR
@cases.mark_services
class RegistrationTestCase(cases.BaseServerTestCase):
run_services = True
def testRegistration(self):
self.controller.registerUser(self, "testuser", "mypassword")
@cases.mark_services
class SaslTestCase(cases.BaseServerTestCase, cases.OptionalityHelper):
run_services = True
@cases.mark_specifications("IRCv3")
@cases.OptionalityHelper.skipUnlessHasMechanism("PLAIN")
def testPlain(self):

View File

@ -13,9 +13,8 @@ from irctest.numerics import (
)
@cases.mark_services
class WhoisTestCase(cases.BaseServerTestCase, cases.OptionalityHelper):
run_services = True
@cases.mark_specifications("RFC2812")
def testWhoisUser(self):
"""Test basic WHOIS behavior"""

View File

@ -13,9 +13,8 @@ def extract_playback_privmsgs(messages):
return result
@cases.mark_services
class ZncPlaybackTestCase(cases.BaseServerTestCase):
run_services = True
@staticmethod
def config() -> cases.TestCaseControllerConfig:
return cases.TestCaseControllerConfig(chathistory=True)

View File

@ -11,6 +11,7 @@ markers =
# misc marks
strict
deprecated
services
# capabilities
account-tag