diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/cmd.py | 18 | ||||
-rw-r--r-- | Lib/test/test_cmd.py | 11 | ||||
-rw-r--r-- | Lib/test/test_hashlib.py | 9 |
3 files changed, 24 insertions, 14 deletions
@@ -278,19 +278,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 e2b3022..f102fe0 100644 --- a/Lib/test/test_cmd.py +++ b/Lib/test/test_cmd.py @@ -60,15 +60,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") @@ -144,7 +146,7 @@ class samplecmdclass(cmd.Cmd): def complete_command(self): print("complete command") - def do_shell(self): + def do_shell(self, s): pass def do_add(self, s): @@ -171,6 +173,7 @@ def test_main(verbose=None): support.run_doctest(test_cmd, verbose) def test_coverage(coverdir): + import trace tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], trace=0, count=1) tracer.run('reload(cmd);test_main()') @@ -181,5 +184,7 @@ def test_coverage(coverdir): if __name__ == "__main__": if "-c" in sys.argv: test_coverage('/tmp/cmd.cover') + elif "-i" in sys.argv: + samplecmdclass().cmdloop() else: test_main() diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index 2857737..7d58da9 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -6,8 +6,10 @@ # Licensed to PSF under a Contributor Agreement. # +import array import hashlib from io import StringIO +import itertools import sys try: import threading @@ -93,6 +95,13 @@ class HashLibTestCase(unittest.TestCase): super(HashLibTestCase, self).__init__(*args, **kwargs) + def test_hash_array(self): + a = array.array("b", range(10)) + constructors = self.constructors_to_test.values() + for cons in itertools.chain.from_iterable(constructors): + c = cons(a) + c.hexdigest() + def test_unknown_hash(self): try: hashlib.new('spam spam spam spam spam') |