Ensure keyboard aliases do not point to themselves (#25500)
This commit is contained in:
parent
507c948ed8
commit
865c29f4de
1 changed files with 20 additions and 1 deletions
|
|
@ -25,6 +25,21 @@ def _target_keyboard_exists(target):
|
|||
return True
|
||||
|
||||
|
||||
def _alias_not_self(alias):
|
||||
"""Check if alias points to itself, either directly or within a circular reference
|
||||
"""
|
||||
aliases = keyboard_alias_definitions()
|
||||
|
||||
found = set()
|
||||
while alias in aliases:
|
||||
found.add(alias)
|
||||
alias = aliases[alias].get('target', alias)
|
||||
if alias in found:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
@cli.subcommand('Validates the list of keyboard aliases.', hidden=True)
|
||||
def ci_validate_aliases(cli):
|
||||
aliases = keyboard_alias_definitions()
|
||||
|
|
@ -32,7 +47,11 @@ def ci_validate_aliases(cli):
|
|||
success = True
|
||||
for alias in aliases.keys():
|
||||
target = aliases[alias].get('target', None)
|
||||
if not _target_keyboard_exists(target):
|
||||
if not _alias_not_self(alias):
|
||||
cli.log.error(f'Keyboard alias {alias} should not point to itself')
|
||||
success = False
|
||||
|
||||
elif not _target_keyboard_exists(target):
|
||||
cli.log.error(f'Keyboard alias {alias} has a target that doesn\'t exist: {target}')
|
||||
success = False
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue