view tests/test-duplicateoptions.py @ 52886:e6069f84abbb

cleanup: remove the sqlitestore extension The idea of having a clear storage interface and a small extension to test it was not bad in theory. However this never materialize to anything concrete, and nobody has touched this extensions for over 6 years. So it is mainly getting in the way of other works. Incidently, the clarification of interface is seeing progress thanks to the Matt Harbison typing effort and the slow rewrite into rust of core element led by Octobus. So I suggest we drop this extension, freeing energy for other improvements.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 10 Feb 2025 10:42:16 +0100
parents 6000f5b25c9b
children
line wrap: on
line source

import os
from mercurial import (
    commands,
    extensions,
    ui as uimod,
)

ignore = {b'highlight', b'win32text', b'factotum', b'beautifygraph'}

if os.name != 'nt':
    ignore.add(b'win32mbcs')

disabled = [ext for ext in extensions.disabled().keys() if ext not in ignore]

hgrc = open(os.environ["HGRCPATH"], 'wb')
hgrc.write(b'[extensions]\n')

for ext in disabled:
    hgrc.write(ext + b'=\n')

hgrc.close()

u = uimod.ui.load()
extensions.loadall(u)
extensions.populateui(u)

globalshort = set()
globallong = set()
for option in commands.globalopts:
    option[0] and globalshort.add(option[0])
    option[1] and globallong.add(option[1])

for cmd, entry in commands.table.items():
    seenshort = globalshort.copy()
    seenlong = globallong.copy()
    for option in entry[1]:
        if (option[0] and option[0] in seenshort) or (
            option[1] and option[1] in seenlong
        ):
            print("command '" + cmd + "' has duplicate option " + str(option))
        seenshort.add(option[0])
        seenlong.add(option[1])