tests: add a test to check for duplicate command options
authorIdan Kamara <idankk86@gmail.com>
Fri, 27 May 2011 17:51:16 +0300
changeset 14449 7d171c05a631
parent 14448 7d367e8f892d
child 14450 d1a1578c5f78
tests: add a test to check for duplicate command options
tests/test-duplicateoptions.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-duplicateoptions.py	Fri May 27 17:51:16 2011 +0300
@@ -0,0 +1,30 @@
+import os
+from mercurial import ui, commands, extensions
+
+ignore = set(['highlight', 'win32text'])
+
+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()
+
+u = ui.ui()
+extensions.loadall(u)
+
+for cmd, entry in commands.table.iteritems():
+    seenshort = set()
+    seenlong = set()
+    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])