test-duplicateoptions.py
41 lines
| 1.0 KiB
| text/x-python
|
PythonLexer
/ tests / test-duplicateoptions.py
|
r28740 | from __future__ import absolute_import, print_function | ||
|
r14449 | import os | ||
|
r28739 | from mercurial import ( | ||
commands, | ||||
extensions, | ||||
|
r28804 | ui as uimod, | ||
|
r28739 | ) | ||
|
r14449 | |||
|
r20622 | ignore = set(['highlight', 'win32text', 'factotum']) | ||
|
r14449 | |||
if os.name != 'nt': | ||||
ignore.add('win32mbcs') | ||||
disabled = [ext for ext in extensions.disabled().keys() if ext not in ignore] | ||||
hgrc = open(os.environ["HGRCPATH"], 'w') | ||||
hgrc.write('[extensions]\n') | ||||
for ext in disabled: | ||||
hgrc.write(ext + '=\n') | ||||
hgrc.close() | ||||
|
r28804 | u = uimod.ui() | ||
|
r14449 | extensions.loadall(u) | ||
|
r15099 | globalshort = set() | ||
globallong = set() | ||||
for option in commands.globalopts: | ||||
option[0] and globalshort.add(option[0]) | ||||
option[1] and globallong.add(option[1]) | ||||
|
r14449 | for cmd, entry in commands.table.iteritems(): | ||
|
r15099 | seenshort = globalshort.copy() | ||
seenlong = globallong.copy() | ||||
|
r14449 | for option in entry[1]: | ||
if (option[0] and option[0] in seenshort) or \ | ||||
(option[1] and option[1] in seenlong): | ||||
|
r28740 | print("command '" + cmd + "' has duplicate option " + str(option)) | ||
|
r14449 | seenshort.add(option[0]) | ||
seenlong.add(option[1]) | ||||