Skip to content

Commit

Permalink
irc: default CHANMODES for the mode parser
Browse files Browse the repository at this point in the history
  • Loading branch information
Exirel committed Jul 14, 2021
1 parent 463d397 commit 31dcab2
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
10 changes: 9 additions & 1 deletion sopel/irc/modes.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,17 @@ class ModeParser:
}
"""Set of user privileges used by default."""

CHANMODES = {
'A': tuple('beI'),
'B': tuple('k'),
'C': tuple('l'),
'D': tuple('Oaimnqpsrt'),
}
"""Default CHANMODES per :rfc:`2811`."""

def __init__(
self,
chanmodes: Dict[str, Tuple[str, ...]],
chanmodes: Dict[str, Tuple[str, ...]] = CHANMODES,
type_params: Dict[str, ParamRequired] = DEFAULT_MODETYPE_PARAM_CONFIG,
privileges: Set[str] = PRIVILEGES,
) -> None:
Expand Down
27 changes: 27 additions & 0 deletions test/irc/test_irc_modes.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,33 @@ def test_modemessage_get_mode_info_custom_privileges():
modemessage.get_mode_info('v', REMOVED)


def test_modemessage_parse_modestring_default():
modeparser = ModeParser()
result = modeparser.parse_modestring(
'+Oaimn-qpsrt+lk-beI' + '+Z',
tuple('abcdef'))
assert result.modes == (
('D', 'O', ADDED, None),
('D', 'a', ADDED, None),
('D', 'i', ADDED, None),
('D', 'm', ADDED, None),
('D', 'n', ADDED, None),
('D', 'q', REMOVED, None),
('D', 'p', REMOVED, None),
('D', 's', REMOVED, None),
('D', 'r', REMOVED, None),
('D', 't', REMOVED, None),
('C', 'l', ADDED, 'a'),
('B', 'k', ADDED, 'b'),
('A', 'b', REMOVED, 'c'),
('A', 'e', REMOVED, 'd'),
('A', 'I', REMOVED, 'e'),
)
assert result.ignored_modes == (('Z', ADDED),)
assert not result.privileges
assert result.leftover_params == ('f',)


def test_modemessage_parse_modestring_single_mode():
modemessage = ModeParser({
'X': tuple('bc'),
Expand Down

0 comments on commit 31dcab2

Please sign in to comment.