1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-04 08:50:05 +08:00
SpaceVim/bundle/jedi-vim/pythonx/jedi/test/test_api/test_search.py
2022-10-23 15:41:52 +08:00

90 lines
3.4 KiB
Python

import os
import sys
import pytest
class SomeClass:
class SomeClass:
def twice(self, a):
something = os
return something
def twice(self, b):
pass
def some_function():
pass
@pytest.mark.parametrize(
'string, descriptions, kwargs', [
# No completions
('SomeClass', ['class SomeClass'], {}),
('SomeClass', ['class SomeClass', 'class SomeClass.SomeClass'], dict(all_scopes=True)),
('Some', [], dict(all_scopes=True)),
('os', ['module os'], {}),
('sys', ['module sys'], {}),
('sys.path', ['statement sys.path'], {}),
('sys.exit', ['function sys.exit'], {}),
('something', [], {}),
('something', ['statement SomeClass.SomeClass.twice.something'], dict(all_scopes=True)),
# Completions
('class Some', ['class SomeClass', 'class SomeClass.SomeClass'],
dict(all_scopes=True, complete=True)),
('class Some', ['class SomeClass'], dict(complete=True)),
('Some', ['class SomeClass', 'class SomeClass.SomeClass',
'statement SomeClass.SomeClass.twice.something',
'function SomeClass.some_function'], dict(all_scopes=True, complete=True)),
('some', ['class SomeClass', 'class SomeClass.SomeClass',
'statement SomeClass.SomeClass.twice.something',
'function SomeClass.some_function'], dict(all_scopes=True, complete=True)),
# Fuzzy
('class Smelss', ['class SomeClass'], dict(complete=True, fuzzy=True)),
('class Smelss', ['class SomeClass', 'class SomeClass.SomeClass'],
dict(complete=True, fuzzy=True, all_scopes=True)),
# Nested
('SomeClass.SomeClass', ['class SomeClass.SomeClass'],
dict(all_scopes=True)),
('SomeClass.SomeClass.twice', ['function SomeClass.SomeClass.twice'],
dict(all_scopes=True)),
('SomeClass.SomeClass.twice.__call__', ['function types.FunctionType.__call__'],
dict(all_scopes=True)),
('SomeClass.SomeClass.twice.something', [], dict(all_scopes=True)),
('SomeClass.twice', ['function SomeClass.twice', 'function SomeClass.SomeClass.twice'],
dict(all_scopes=True)),
# Nested completions
('SomeClass.twi', ['function SomeClass.twice', 'function SomeClass.SomeClass.twice'],
dict(all_scopes=True, complete=True)),
# Fuzzy unfortunately doesn't work
('SomeCl.twice', [], dict(all_scopes=True, complete=True, fuzzy=True)),
]
)
def test_simple_search(Script, string, descriptions, kwargs):
if kwargs.pop('complete', False) is True:
defs = Script(path=__file__).complete_search(string, **kwargs)
else:
defs = Script(path=__file__).search(string, **kwargs)
this_mod = 'test.test_api.test_search.'
assert [d.type + ' ' + d.full_name.replace(this_mod, '') for d in defs] == descriptions
@pytest.mark.parametrize(
'string, completions, fuzzy, all_scopes', [
('SomeCl', ['ass'], False, False),
('SomeCl', [None], True, False),
('twic', [], False, False),
('some_f', [], False, False),
('twic', ['e', 'e'], False, True),
('some_f', ['unction'], False, True),
]
)
def test_complete_search(Script, string, completions, fuzzy, all_scopes):
defs = Script(path=__file__).complete_search(string, fuzzy=fuzzy, all_scopes=all_scopes)
assert [d.complete for d in defs] == completions