diff options
author | Yury Selivanov <yselivanov@sprymix.com> | 2016-02-04 19:00:26 (GMT) |
---|---|---|
committer | Yury Selivanov <yselivanov@sprymix.com> | 2016-02-04 19:00:26 (GMT) |
commit | 46f7785e28c17f33252a95a57dd3827811291394 (patch) | |
tree | dafb038037c276386eb8ac8a034d8f69cfa280cb /Lib | |
parent | a7eae4016ed2f97b15000022ce0f39e0b271b37c (diff) | |
download | cpython-46f7785e28c17f33252a95a57dd3827811291394.zip cpython-46f7785e28c17f33252a95a57dd3827811291394.tar.gz cpython-46f7785e28c17f33252a95a57dd3827811291394.tar.bz2 |
Issue #25660: Fix a unittest and rlcompleter when readline isn't available
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/rlcompleter.py | 12 | ||||
-rw-r--r-- | Lib/test/test_rlcompleter.py | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py index 26f5920..401a626 100644 --- a/Lib/rlcompleter.py +++ b/Lib/rlcompleter.py @@ -75,9 +75,12 @@ class Completer: if not text.strip(): if state == 0: - readline.insert_text('\t') - readline.redisplay() - return '' + if _readline_available: + readline.insert_text('\t') + readline.redisplay() + return '' + else: + return '\t' else: return None @@ -170,10 +173,11 @@ def get_class_members(klass): try: import readline except ImportError: - pass + _readline_available = False else: readline.set_completer(Completer().complete) # Release references early at shutdown (the readline module's # contents are quasi-immortal, and the completer function holds a # reference to globals). atexit.register(lambda: readline.set_completer(None)) + _readline_available = True diff --git a/Lib/test/test_rlcompleter.py b/Lib/test/test_rlcompleter.py index 2d5d9c1..853e773 100644 --- a/Lib/test/test_rlcompleter.py +++ b/Lib/test/test_rlcompleter.py @@ -1,4 +1,5 @@ import unittest +import unittest.mock import builtins import rlcompleter @@ -77,6 +78,7 @@ class TestRlcompleter(unittest.TestCase): self.assertEqual(completer.complete('f.b', 0), 'f.bar') self.assertEqual(f.calls, 1) + @unittest.mock.patch('rlcompleter._readline_available', False) def test_complete(self): completer = rlcompleter.Completer() self.assertEqual(completer.complete('', 0), '\t') |