diff options
Diffstat (limited to 'Lib/test/test_rlcompleter.py')
-rw-r--r-- | Lib/test/test_rlcompleter.py | 66 |
1 files changed, 16 insertions, 50 deletions
diff --git a/Lib/test/test_rlcompleter.py b/Lib/test/test_rlcompleter.py index 0dc1080..99f0480 100644 --- a/Lib/test/test_rlcompleter.py +++ b/Lib/test/test_rlcompleter.py @@ -1,12 +1,11 @@ +from test import test_support as support import unittest -from unittest.mock import patch -import builtins +import __builtin__ as builtins import rlcompleter -class CompleteMe: +class CompleteMe(object): """ Trivial class used in testing rlcompleter.Completer. """ spam = 1 - _ham = 2 class TestRlcompleter(unittest.TestCase): @@ -53,32 +52,18 @@ class TestRlcompleter(unittest.TestCase): ['str.{}('.format(x) for x in dir(str) if x.startswith('s')]) self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), []) - expected = sorted({'None.%s%s' % (x, '(' if x != '__doc__' else '') - for x in dir(None)}) - self.assertEqual(self.stdcompleter.attr_matches('None.'), expected) - self.assertEqual(self.stdcompleter.attr_matches('None._'), expected) - self.assertEqual(self.stdcompleter.attr_matches('None.__'), expected) # test with a customized namespace self.assertEqual(self.completer.attr_matches('CompleteMe.sp'), ['CompleteMe.spam']) self.assertEqual(self.completer.attr_matches('Completeme.egg'), []) - self.assertEqual(self.completer.attr_matches('CompleteMe.'), - ['CompleteMe.mro(', 'CompleteMe.spam']) - self.assertEqual(self.completer.attr_matches('CompleteMe._'), - ['CompleteMe._ham']) - matches = self.completer.attr_matches('CompleteMe.__') - for x in matches: - self.assertTrue(x.startswith('CompleteMe.__'), x) - self.assertIn('CompleteMe.__name__', matches) - self.assertIn('CompleteMe.__new__(', matches) - - with patch.object(CompleteMe, "me", CompleteMe, create=True): - self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'), - ['CompleteMe.me.me.spam']) - self.assertEqual(self.completer.attr_matches('egg.s'), - ['egg.{}('.format(x) for x in dir(str) - if x.startswith('s')]) + + CompleteMe.me = CompleteMe + self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'), + ['CompleteMe.me.me.spam']) + self.assertEqual(self.completer.attr_matches('egg.s'), + ['egg.{}('.format(x) for x in dir(str) + if x.startswith('s')]) def test_excessive_getattr(self): # Ensure getattr() is invoked no more than once per attribute @@ -93,27 +78,8 @@ class TestRlcompleter(unittest.TestCase): self.assertEqual(completer.complete('f.b', 0), 'f.bar') self.assertEqual(f.calls, 1) - def test_uncreated_attr(self): - # Attributes like properties and slots should be completed even when - # they haven't been created on an instance - class Foo: - __slots__ = ("bar",) - completer = rlcompleter.Completer(dict(f=Foo())) - self.assertEqual(completer.complete('f.', 0), 'f.bar') - - @unittest.mock.patch('rlcompleter._readline_available', False) - def test_complete(self): - completer = rlcompleter.Completer() - self.assertEqual(completer.complete('', 0), '\t') - self.assertEqual(completer.complete('a', 0), 'and ') - self.assertEqual(completer.complete('a', 1), 'as ') - self.assertEqual(completer.complete('as', 2), 'assert ') - self.assertEqual(completer.complete('an', 0), 'and ') - self.assertEqual(completer.complete('pa', 0), 'pass') - self.assertEqual(completer.complete('Fa', 0), 'False') - self.assertEqual(completer.complete('el', 0), 'elif ') - self.assertEqual(completer.complete('el', 1), 'else') - self.assertEqual(completer.complete('tr', 0), 'try:') +def test_main(): + support.run_unittest(TestRlcompleter) def test_duplicate_globals(self): namespace = { @@ -126,10 +92,9 @@ class TestRlcompleter(unittest.TestCase): completer = rlcompleter.Completer(namespace) self.assertEqual(completer.complete('False', 0), 'False') self.assertIsNone(completer.complete('False', 1)) # No duplicates - # Space or colon added due to being a reserved keyword - self.assertEqual(completer.complete('assert', 0), 'assert ') + self.assertEqual(completer.complete('assert', 0), 'assert') self.assertIsNone(completer.complete('assert', 1)) - self.assertEqual(completer.complete('try', 0), 'try:') + self.assertEqual(completer.complete('try', 0), 'try') self.assertIsNone(completer.complete('try', 1)) # No opening bracket "(" because we overrode the built-in class self.assertEqual(completer.complete('memoryview', 0), 'memoryview') @@ -137,5 +102,6 @@ class TestRlcompleter(unittest.TestCase): self.assertEqual(completer.complete('Ellipsis', 0), 'Ellipsis(') self.assertIsNone(completer.complete('Ellipsis', 1)) + if __name__ == '__main__': - unittest.main() + test_main() |