14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom test import test_support as support 24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport unittest 34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport __builtin__ as builtins 44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport rlcompleter 54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmclass CompleteMe(object): 74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm """ Trivial class used in testing rlcompleter.Completer. """ 84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm spam = 1 94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmclass TestRlcompleter(unittest.TestCase): 124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def setUp(self): 134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.stdcompleter = rlcompleter.Completer() 144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.completer = rlcompleter.Completer(dict(spam=int, 154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm egg=str, 164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm CompleteMe=CompleteMe)) 174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # forces stdcompleter to bind builtins namespace 194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.stdcompleter.complete('', 0) 204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_namespace(self): 224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm class A(dict): 234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pass 244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm class B(list): 254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pass 264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertTrue(self.stdcompleter.use_main_ns) 284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertFalse(self.completer.use_main_ns) 294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertFalse(rlcompleter.Completer(A()).use_main_ns) 304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertRaises(TypeError, rlcompleter.Completer, B((1,))) 314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_global_matches(self): 334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # test with builtins namespace 344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(sorted(self.stdcompleter.global_matches('di')), 354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm [x+'(' for x in dir(builtins) if x.startswith('di')]) 364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(sorted(self.stdcompleter.global_matches('st')), 374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm [x+'(' for x in dir(builtins) if x.startswith('st')]) 384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.stdcompleter.global_matches('akaksajadhak'), []) 394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # test with a customized namespace 414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.completer.global_matches('CompleteM'), 424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ['CompleteMe(']) 434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.completer.global_matches('eg'), 444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ['egg(']) 454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # XXX: see issue5256 464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.completer.global_matches('CompleteM'), 474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ['CompleteMe(']) 484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_attr_matches(self): 504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # test with builtins namespace 514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.stdcompleter.attr_matches('str.s'), 524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ['str.{}('.format(x) for x in dir(str) 534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm if x.startswith('s')]) 544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), []) 554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # test with a customized namespace 574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.completer.attr_matches('CompleteMe.sp'), 584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ['CompleteMe.spam']) 594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.completer.attr_matches('Completeme.egg'), []) 604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm CompleteMe.me = CompleteMe 624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'), 634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ['CompleteMe.me.me.spam']) 644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(self.completer.attr_matches('egg.s'), 654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ['egg.{}('.format(x) for x in dir(str) 664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm if x.startswith('s')]) 674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef test_main(): 694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm support.run_unittest(TestRlcompleter) 704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmif __name__ == '__main__': 734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm test_main() 74