Mercurial > hg
view tests/test-duplicateoptions.py @ 46159:929054848d6c
copies: properly match result during changeset centric copy tracing
By filtering "during" the iteration we were excluding rename information that
were not in the matched set but that file served as base information for the
matched set.
We now do all copy tracing matching at the end of the process to ensure we raise
proper result.
If we were aggregating information top down instead of bottom up we could do
filtering during processing. However, we don't.
Differential Revision: https://phab.mercurial-scm.org/D9585
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 13 Dec 2020 20:16:34 +0100 |
parents | 2372284d9457 |
children | 6000f5b25c9b |
line wrap: on
line source
from __future__ import absolute_import, print_function import os from mercurial import ( commands, extensions, ui as uimod, ) ignore = {b'highlight', b'win32text', b'factotum', b'beautifygraph'} try: import sqlite3 del sqlite3 # unused, just checking that import works except ImportError: ignore.add(b'sqlitestore') 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])