mirror of https://github.com/jesopo/ircstates
make CAP tokens without "=value" be key:"", avoiding None checks
This commit is contained in:
parent
8b18a696be
commit
048ae4252e
|
@ -44,9 +44,9 @@ class Server(Named):
|
|||
self.isupport = ISupport()
|
||||
|
||||
self.has_cap: bool = False
|
||||
self._temp_caps: Dict[str, Optional[str]] = {}
|
||||
self.available_caps: Dict[str, Optional[str]] = {}
|
||||
self.agreed_caps: List[str] = []
|
||||
self._temp_caps: Dict[str, str] = {}
|
||||
self.available_caps: Dict[str, str] = {}
|
||||
self.agreed_caps: List[str] = []
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"Server(name={self.name!r})"
|
||||
|
@ -645,12 +645,12 @@ class Server(Named):
|
|||
caps = line.params[2 + (1 if multiline else 0)]
|
||||
|
||||
|
||||
tokens: Dict[str, Optional[str]] = {}
|
||||
tokens_str: List[str] = []
|
||||
tokens: Dict[str, str] = {}
|
||||
tokens_str: List[str] = []
|
||||
for cap in filter(bool, caps.split(" ")):
|
||||
tokens_str.append(cap)
|
||||
key, _, value = cap.partition("=")
|
||||
tokens[key] = value or None
|
||||
tokens[key] = value
|
||||
|
||||
emit = self._emit()
|
||||
emit.subcommand = subcommand
|
||||
|
|
17
test/cap.py
17
test/cap.py
|
@ -7,21 +7,19 @@ class CapTestLS(unittest.TestCase):
|
|||
self.assertFalse(server.has_cap)
|
||||
self.assertEqual(server.available_caps, {})
|
||||
server.parse_tokens(irctokens.tokenise("CAP * LS :a b"))
|
||||
self.assertEqual(server.available_caps, {"a": None, "b": None})
|
||||
self.assertEqual(server.available_caps, {"a": "", "b": ""})
|
||||
|
||||
def test_two_lines(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("CAP * LS * :a b"))
|
||||
self.assertEqual(server.available_caps, {})
|
||||
server.parse_tokens(irctokens.tokenise("CAP * LS :c"))
|
||||
self.assertEqual(server.available_caps,
|
||||
{"a": None, "b": None, "c": None})
|
||||
self.assertEqual(server.available_caps, {"a": "", "b": "", "c": ""})
|
||||
|
||||
def test_values(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("CAP * LS :a b= c=1"))
|
||||
self.assertEqual(server.available_caps,
|
||||
{"a": None, "b": None, "c": "1"})
|
||||
self.assertEqual(server.available_caps, {"a": "", "b": "", "c": "1"})
|
||||
|
||||
class CapTestACK(unittest.TestCase):
|
||||
def test_one_line(self):
|
||||
|
@ -47,20 +45,19 @@ class CapTestNEW(unittest.TestCase):
|
|||
def test_no_ls(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("CAP * NEW :a"))
|
||||
self.assertEqual(server.available_caps, {"a": None})
|
||||
self.assertEqual(server.available_caps, {"a": ""})
|
||||
|
||||
def test_one(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("CAP * LS :a"))
|
||||
server.parse_tokens(irctokens.tokenise("CAP * NEW :b"))
|
||||
self.assertEqual(server.available_caps, {"a": None, "b": None})
|
||||
self.assertEqual(server.available_caps, {"a": "", "b": ""})
|
||||
|
||||
def test_two(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("CAP * LS :a"))
|
||||
server.parse_tokens(irctokens.tokenise("CAP * NEW :b c"))
|
||||
self.assertEqual(server.available_caps,
|
||||
{"a": None, "b": None, "c": None})
|
||||
self.assertEqual(server.available_caps, {"a": "", "b": "", "c": ""})
|
||||
|
||||
class CapTestDEL(unittest.TestCase):
|
||||
def test_not_acked(self):
|
||||
|
@ -80,7 +77,7 @@ class CapTestDEL(unittest.TestCase):
|
|||
server.parse_tokens(irctokens.tokenise("CAP * LS :a b"))
|
||||
server.parse_tokens(irctokens.tokenise("CAP * ACK :a b"))
|
||||
server.parse_tokens(irctokens.tokenise("CAP * DEL :a"))
|
||||
self.assertEqual(server.available_caps, {"b": None})
|
||||
self.assertEqual(server.available_caps, {"b": ""})
|
||||
self.assertEqual(server.agreed_caps, ["b"])
|
||||
|
||||
def test_two_del(self):
|
||||
|
|
Loading…
Reference in New Issue