Merged revisions 83719 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r83719 | antoine.pitrou | 2010-08-04 17:43:16 +0200 (mer., 04 août 2010) | 4 lines

  Issue #9496: Provide a test suite for the rlcompleter module.  Patch by
  Michele Orrù.
........
This commit is contained in:
Antoine Pitrou 2010-08-04 15:54:33 +00:00
parent c529a07cf4
commit 185fae73c6
4 changed files with 77 additions and 1 deletions

View file

@ -0,0 +1,73 @@
from test import test_support as support
import unittest
import __builtin__ as builtins
import rlcompleter
class CompleteMe(object):
""" Trivial class used in testing rlcompleter.Completer. """
spam = 1
class TestRlcompleter(unittest.TestCase):
def setUp(self):
self.stdcompleter = rlcompleter.Completer()
self.completer = rlcompleter.Completer(dict(spam=int,
egg=str,
CompleteMe=CompleteMe))
# forces stdcompleter to bind builtins namespace
self.stdcompleter.complete('', 0)
def test_namespace(self):
class A(dict):
pass
class B(list):
pass
self.assertTrue(self.stdcompleter.use_main_ns)
self.assertFalse(self.completer.use_main_ns)
self.assertFalse(rlcompleter.Completer(A()).use_main_ns)
self.assertRaises(TypeError, rlcompleter.Completer, B((1,)))
def test_global_matches(self):
# test with builtins namespace
self.assertEqual(self.stdcompleter.global_matches('di'),
[x+'(' for x in dir(builtins) if x.startswith('di')])
self.assertEqual(self.stdcompleter.global_matches('st'),
[x+'(' for x in dir(builtins) if x.startswith('st')])
self.assertEqual(self.stdcompleter.global_matches('akaksajadhak'), [])
# test with a customized namespace
self.assertEqual(self.completer.global_matches('CompleteM'),
['CompleteMe('])
self.assertEqual(self.completer.global_matches('eg'),
['egg('])
# XXX: see issue5256
self.assertEqual(self.completer.global_matches('CompleteM'),
['CompleteMe('])
def test_attr_matches(self):
# test with builtins namespace
self.assertEqual(self.stdcompleter.attr_matches('str.s'),
['str.{}('.format(x) for x in dir(str)
if x.startswith('s')])
self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), [])
# test with a customized namespace
self.assertEqual(self.completer.attr_matches('CompleteMe.sp'),
['CompleteMe.spam'])
self.assertEqual(self.completer.attr_matches('Completeme.egg'), [])
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_main():
support.run_unittest(TestRlcompleter)
if __name__ == '__main__':
test_main()

View file

@ -65,7 +65,6 @@ class TestUntestedModules(unittest.TestCase):
import pstats import pstats
import py_compile import py_compile
import rexec import rexec
import rlcompleter
import sched import sched
import sndhdr import sndhdr
import statvfs import statvfs

View file

@ -575,6 +575,7 @@ Grant Olson
Piet van Oostrum Piet van Oostrum
Jason Orendorff Jason Orendorff
Douglas Orr Douglas Orr
Michele Orrù
Denis S. Otkidach Denis S. Otkidach
Michael Otteneder Michael Otteneder
R. M. Oudkerk R. M. Oudkerk

View file

@ -185,6 +185,9 @@ Build
Tests Tests
----- -----
- Issue #9496: Provide a test suite for the rlcompleter module. Patch by
Michele Orrù.
- Issue #8605: Skip test_gdb if Python is compiled with optimizations. - Issue #8605: Skip test_gdb if Python is compiled with optimizations.
Documentation Documentation