mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-04 11:30:06 +08:00
90 lines
3.4 KiB
Python
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
|