1 | from test import test_support as support
|
---|
2 | import unittest
|
---|
3 | import __builtin__ as builtins
|
---|
4 | import rlcompleter
|
---|
5 |
|
---|
6 | class CompleteMe(object):
|
---|
7 | """ Trivial class used in testing rlcompleter.Completer. """
|
---|
8 | spam = 1
|
---|
9 |
|
---|
10 |
|
---|
11 | class TestRlcompleter(unittest.TestCase):
|
---|
12 | def setUp(self):
|
---|
13 | self.stdcompleter = rlcompleter.Completer()
|
---|
14 | self.completer = rlcompleter.Completer(dict(spam=int,
|
---|
15 | egg=str,
|
---|
16 | CompleteMe=CompleteMe))
|
---|
17 |
|
---|
18 | # forces stdcompleter to bind builtins namespace
|
---|
19 | self.stdcompleter.complete('', 0)
|
---|
20 |
|
---|
21 | def test_namespace(self):
|
---|
22 | class A(dict):
|
---|
23 | pass
|
---|
24 | class B(list):
|
---|
25 | pass
|
---|
26 |
|
---|
27 | self.assertTrue(self.stdcompleter.use_main_ns)
|
---|
28 | self.assertFalse(self.completer.use_main_ns)
|
---|
29 | self.assertFalse(rlcompleter.Completer(A()).use_main_ns)
|
---|
30 | self.assertRaises(TypeError, rlcompleter.Completer, B((1,)))
|
---|
31 |
|
---|
32 | def test_global_matches(self):
|
---|
33 | # test with builtins namespace
|
---|
34 | self.assertEqual(sorted(self.stdcompleter.global_matches('di')),
|
---|
35 | [x+'(' for x in dir(builtins) if x.startswith('di')])
|
---|
36 | self.assertEqual(sorted(self.stdcompleter.global_matches('st')),
|
---|
37 | [x+'(' for x in dir(builtins) if x.startswith('st')])
|
---|
38 | self.assertEqual(self.stdcompleter.global_matches('akaksajadhak'), [])
|
---|
39 |
|
---|
40 | # test with a customized namespace
|
---|
41 | self.assertEqual(self.completer.global_matches('CompleteM'),
|
---|
42 | ['CompleteMe('])
|
---|
43 | self.assertEqual(self.completer.global_matches('eg'),
|
---|
44 | ['egg('])
|
---|
45 | # XXX: see issue5256
|
---|
46 | self.assertEqual(self.completer.global_matches('CompleteM'),
|
---|
47 | ['CompleteMe('])
|
---|
48 |
|
---|
49 | def test_attr_matches(self):
|
---|
50 | # test with builtins namespace
|
---|
51 | self.assertEqual(self.stdcompleter.attr_matches('str.s'),
|
---|
52 | ['str.{}('.format(x) for x in dir(str)
|
---|
53 | if x.startswith('s')])
|
---|
54 | self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), [])
|
---|
55 |
|
---|
56 | # test with a customized namespace
|
---|
57 | self.assertEqual(self.completer.attr_matches('CompleteMe.sp'),
|
---|
58 | ['CompleteMe.spam'])
|
---|
59 | self.assertEqual(self.completer.attr_matches('Completeme.egg'), [])
|
---|
60 |
|
---|
61 | CompleteMe.me = CompleteMe
|
---|
62 | self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'),
|
---|
63 | ['CompleteMe.me.me.spam'])
|
---|
64 | self.assertEqual(self.completer.attr_matches('egg.s'),
|
---|
65 | ['egg.{}('.format(x) for x in dir(str)
|
---|
66 | if x.startswith('s')])
|
---|
67 |
|
---|
68 | def test_main():
|
---|
69 | support.run_unittest(TestRlcompleter)
|
---|
70 |
|
---|
71 |
|
---|
72 | if __name__ == '__main__':
|
---|
73 | test_main()
|
---|