MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_attr_matches

Method test_attr_matches

Lib/test/test_rlcompleter.py:53–102  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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"""

Callers

nothing calls this directly

Calls 7

dirFunction · 0.85
attr_matchesMethod · 0.80
assertTrueMethod · 0.80
assertInMethod · 0.80
assertEqualMethod · 0.45
formatMethod · 0.45
startswithMethod · 0.45

Tested by

no test coverage detected