mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 14:34:31 +08:00
67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
from jedi._compatibility import builtins, is_py3
|
|
from jedi.parser.representation import Function
|
|
from jedi.evaluate import compiled, representation
|
|
from jedi.evaluate import Evaluator
|
|
from jedi import Script
|
|
|
|
|
|
def test_simple():
|
|
e = Evaluator()
|
|
bltn = compiled.CompiledObject(builtins)
|
|
obj = compiled.CompiledObject('_str_', bltn)
|
|
upper = e.find_types(obj, 'upper')
|
|
assert len(upper) == 1
|
|
objs = list(e.execute(upper[0]))
|
|
assert len(objs) == 1
|
|
assert isinstance(objs[0], representation.Instance)
|
|
|
|
|
|
def test_fake_loading():
|
|
assert isinstance(compiled.create(Evaluator(), next), Function)
|
|
|
|
string = compiled.builtin.get_subscope_by_name('str')
|
|
from_name = compiled._create_from_name(
|
|
compiled.builtin,
|
|
string,
|
|
'__init__'
|
|
)
|
|
assert isinstance(from_name, Function)
|
|
|
|
|
|
def test_fake_docstr():
|
|
assert compiled.create(Evaluator(), next).raw_doc == next.__doc__
|
|
|
|
|
|
def test_parse_function_doc_illegal_docstr():
|
|
docstr = """
|
|
test_func(o
|
|
|
|
doesn't have a closing bracket.
|
|
"""
|
|
assert ('', '') == compiled._parse_function_doc(docstr)
|
|
|
|
|
|
def test_doc():
|
|
"""
|
|
Even CompiledObject docs always return empty docstrings - not None, that's
|
|
just a Jedi API definition.
|
|
"""
|
|
obj = compiled.CompiledObject(''.__getnewargs__)
|
|
assert obj.doc == ''
|
|
|
|
|
|
def test_string_literals():
|
|
def typ(string):
|
|
d = Script(string).goto_definitions()[0]
|
|
return d.name
|
|
|
|
assert typ('""') == 'str'
|
|
assert typ('r""') == 'str'
|
|
if is_py3:
|
|
assert typ('br""') == 'bytes'
|
|
assert typ('b""') == 'bytes'
|
|
assert typ('u""') == 'str'
|
|
else:
|
|
assert typ('b""') == 'str'
|
|
assert typ('u""') == 'unicode'
|