diff --git a/irctest/irc_utils/message_parser.py b/irctest/irc_utils/message_parser.py index f24a549..ba0ec45 100644 --- a/irctest/irc_utils/message_parser.py +++ b/irctest/irc_utils/message_parser.py @@ -15,7 +15,7 @@ TAG_ESCAPE = [ unescape_tag_value = MultipleReplacer(dict(map(lambda x: (x[1], x[0]), TAG_ESCAPE))) # TODO: validate host -tag_key_validator = re.compile(r"\+?(\S+/)?[a-zA-Z0-9-]+") +tag_key_validator = re.compile(r"^\+?(\S+/)?[a-zA-Z0-9-]+$") def parse_tags(s: str) -> Dict[str, Optional[str]]: diff --git a/irctest/patma.py b/irctest/patma.py index c121414..a9c3db9 100644 --- a/irctest/patma.py +++ b/irctest/patma.py @@ -106,15 +106,15 @@ def match_string(got: Optional[str], expected: Union[str, Operator, None]) -> bo elif isinstance(expected, _AnyStr) and got is not None: return True elif isinstance(expected, StrRe): - if got is None or not re.match(expected.regexp, got): + if got is None or not re.match(expected.regexp + "$", got): return False elif isinstance(expected, OptStrRe): if got is None: return True - if not re.match(expected.regexp, got): + if not re.match(expected.regexp + "$", got): return False elif isinstance(expected, NotStrRe): - if got is None or re.match(expected.regexp, got): + if got is None or re.match(expected.regexp + "$", got): return False elif isinstance(expected, InsensitiveStr): if got is None or got.lower() != expected.string.lower(): diff --git a/irctest/server_tests/isupport.py b/irctest/server_tests/isupport.py index 1848098..8dd1c51 100644 --- a/irctest/server_tests/isupport.py +++ b/irctest/server_tests/isupport.py @@ -56,7 +56,8 @@ class IsupportTestCase(cases.BaseServerTestCase): return m = re.match( - r"\((?P[a-zA-Z]+)\)(?P\S+)", self.server_support["PREFIX"] + r"^\((?P[a-zA-Z]+)\)(?P\S+)$", + self.server_support["PREFIX"], ) self.assertTrue( m, @@ -117,5 +118,5 @@ class IsupportTestCase(cases.BaseServerTestCase): parts = self.server_support["TARGMAX"].split(",") for part in parts: self.assertTrue( - re.match("[A-Z]+:[0-9]*", part), "Invalid TARGMAX key:value: %r", part + re.match("^[A-Z]+:[0-9]*$", part), "Invalid TARGMAX key:value: %r", part )