diff options
-rw-r--r-- | Lib/cmd.py | 18 | ||||
-rw-r--r-- | Lib/test/test_cmd.py | 6 |
2 files changed, 11 insertions, 13 deletions
@@ -281,19 +281,15 @@ class Cmd: return None def get_names(self): - # Inheritance says we have to look in class and - # base classes; order is not important. - names = [] - classes = [self.__class__] - while classes: - aclass = classes.pop(0) - if aclass.__bases__: - classes = classes + list(aclass.__bases__) - names = names + dir(aclass) - return names + # This method used to pull in base class attributes + # at a time dir() didn't do it yet. + return dir(self.__class__) def complete_help(self, *args): - return self.completenames(*args) + commands = set(self.completenames(*args)) + topics = set(a[5:] for a in self.get_names() + if a.startswith('help_' + args[0])) + return list(commands | topics) def do_help(self, arg): if arg: diff --git a/Lib/test/test_cmd.py b/Lib/test/test_cmd.py index 8898a32..2ee5cef 100644 --- a/Lib/test/test_cmd.py +++ b/Lib/test/test_cmd.py @@ -57,15 +57,17 @@ class samplecmdclass(cmd.Cmd): >>> mycmd.completenames("12") [] >>> mycmd.completenames("help") - ['help', 'help'] + ['help'] Test for the function complete_help(): >>> mycmd.complete_help("a") ['add'] >>> mycmd.complete_help("he") - ['help', 'help'] + ['help'] >>> mycmd.complete_help("12") [] + >>> sorted(mycmd.complete_help("")) + ['add', 'exit', 'help', 'shell'] Test for the function do_help(): >>> mycmd.do_help("testet") |