Files
jedi/test/test_evaluate/test_compiled.py
2014-07-31 17:34:35 +02:00

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'