(self)
| 51 | # TODO: RUSTPYTHON |
| 52 | @unittest.expectedFailure |
| 53 | def test_attr_matches(self): |
| 54 | # test with builtins namespace |
| 55 | self.assertEqual(self.stdcompleter.attr_matches('str.s'), |
| 56 | ['str.{}('.format(x) for x in dir(str) |
| 57 | if x.startswith('s')]) |
| 58 | self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), []) |
| 59 | |
| 60 | def create_expected_for_none(): |
| 61 | if not MISSING_C_DOCSTRINGS: |
| 62 | parentheses = ('__init_subclass__', '__class__') |
| 63 | else: |
| 64 | # When `--without-doc-strings` is used, `__class__` |
| 65 | # won't have a known signature. |
| 66 | parentheses = ('__init_subclass__',) |
| 67 | |
| 68 | items = set() |
| 69 | for x in dir(None): |
| 70 | if x in parentheses: |
| 71 | items.add(f'None.{x}()') |
| 72 | elif x == '__doc__': |
| 73 | items.add(f'None.{x}') |
| 74 | else: |
| 75 | items.add(f'None.{x}(') |
| 76 | return sorted(items) |
| 77 | |
| 78 | expected = create_expected_for_none() |
| 79 | self.assertEqual(self.stdcompleter.attr_matches('None.'), expected) |
| 80 | self.assertEqual(self.stdcompleter.attr_matches('None._'), expected) |
| 81 | self.assertEqual(self.stdcompleter.attr_matches('None.__'), expected) |
| 82 | |
| 83 | # test with a customized namespace |
| 84 | self.assertEqual(self.completer.attr_matches('CompleteMe.sp'), |
| 85 | ['CompleteMe.spam']) |
| 86 | self.assertEqual(self.completer.attr_matches('Completeme.egg'), []) |
| 87 | self.assertEqual(self.completer.attr_matches('CompleteMe.'), |
| 88 | ['CompleteMe.mro()', 'CompleteMe.spam']) |
| 89 | self.assertEqual(self.completer.attr_matches('CompleteMe._'), |
| 90 | ['CompleteMe._ham']) |
| 91 | matches = self.completer.attr_matches('CompleteMe.__') |
| 92 | for x in matches: |
| 93 | self.assertTrue(x.startswith('CompleteMe.__'), x) |
| 94 | self.assertIn('CompleteMe.__name__', matches) |
| 95 | self.assertIn('CompleteMe.__new__(', matches) |
| 96 | |
| 97 | with patch.object(CompleteMe, "me", CompleteMe, create=True): |
| 98 | self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'), |
| 99 | ['CompleteMe.me.me.spam']) |
| 100 | self.assertEqual(self.completer.attr_matches('egg.s'), |
| 101 | ['egg.{}('.format(x) for x in dir(str) |
| 102 | if x.startswith('s')]) |
| 103 | |
| 104 | def test_excessive_getattr(self): |
| 105 | """Ensure getattr() is invoked no more than once per attribute""" |
nothing calls this directly
no test coverage detected