summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorYury Selivanov <yselivanov@sprymix.com>2016-02-04 19:00:26 (GMT)
committerYury Selivanov <yselivanov@sprymix.com>2016-02-04 19:00:26 (GMT)
commit46f7785e28c17f33252a95a57dd3827811291394 (patch)
treedafb038037c276386eb8ac8a034d8f69cfa280cb /Lib
parenta7eae4016ed2f97b15000022ce0f39e0b271b37c (diff)
downloadcpython-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.py12
-rw-r--r--Lib/test/test_rlcompleter.py2
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')