def test_call_entity_set_func(call_entity: CallEntity, call_name_entity: VariableEntity): assert call_entity.func is None assert call_entity.call_type is None call_entity.set_func(call_name_entity) assert call_entity.func == call_name_entity assert call_entity.call_type == FUNCTION
def test_call_entity_add_double_starred_keyword_argument(call_entity: CallEntity, keyword_argument_double_starred_entity: KeywordEntity): assert len(call_entity.keyword_arguments) == 0 assert len(call_entity.keyword_argument_types) == 0 assert call_entity.kwargs_var_name is None call_entity.set_starred_kwargs(keyword_argument_double_starred_entity) assert len(call_entity.keyword_arguments) == 0 assert len(call_entity.keyword_argument_types) == 0 assert call_entity.kwargs_var_name == keyword_argument_double_starred_entity.value.name assert call_entity.kwargs_var_type == keyword_argument_double_starred_entity.value.entity_type
def test_call_entity_add_keyword(call_entity: CallEntity, keyword_argument_var_entity: KeywordEntity): assert len(call_entity.keyword_arguments) == 0 assert len(call_entity.keyword_argument_types) == 0 call_entity.add_keyword(keyword_argument_var_entity) assert len(call_entity.keyword_arguments) == 1 \ and call_entity.keyword_arguments[0] == keyword_argument_var_entity assert len(call_entity.keyword_argument_types) == 1 \ and call_entity.keyword_argument_types[0] == keyword_argument_var_entity.entity_type assert call_entity.kwargs_var_name is None
def test_call_entity_add_argument(mocker, call_entity: CallEntity, variable_load_entity: VariableEntity): assert len(call_entity.arguments) == 0 assert len(call_entity.argument_types) == 0 mocker.spy(call_entity, 'set_starred_args') call_entity.add_argument(variable_load_entity) assert len(call_entity.arguments) == 1 assert call_entity.argument_types[0] == VARIABLE assert call_entity.args_var_name is None assert call_entity.set_starred_args.call_count == 0
def test_call_entity_add_starred_argument(mocker, call_entity: CallEntity, starred_entity): assert len(call_entity.arguments) == 0 assert len(call_entity.argument_types) == 0 assert call_entity.args_var_name is None mocker.spy(call_entity, 'set_starred_args') call_entity.add_argument(starred_entity) assert len(call_entity.arguments) == 0 assert len(call_entity.argument_types) == 0 assert call_entity.args_var_name == starred_entity.value.name assert call_entity.args_var_type == starred_entity.value.entity_type assert call_entity.set_starred_args.call_count == 1
def parse(self, node: ast.Call, module: Module, context: Context): """Process a ``ast.Call`` node and extract relevant stats. A ``ast.Call`` node has the following fields: - ``func`` that represents the function, which will often be a ``ast.Name`` or ``ast.Attribute`` node - ``args`` that represents a list of the arguments passed by position - ``keywords`` that represents a list of keyword objects representing arguments passed by keyword - ``starargs`` holds a single node, for arguments passed as *args. This is removed in Python 3.5. - ``kwargs`` holds a single node, for arguments passed as **kwargs. This is removed in Python 3.5. :param node: The node that represents a call expression. :param module: The python module where this call is encountered. :param context: The context of the given node. :return: The CallEntity instance created from the given ``ast.Call`` node. """ call: CallEntity = CallEntity(node, context) context.stack_ast_node(call) super().parse(node, module, context) context.unstack_ast_node() module.add_call(call) return call
def test_call_entity_initialization(ast_call_node: ast.Call, context: Context): call_entity = CallEntity(ast_call_node, context) assert call_entity.line_nr == 1 assert call_entity.func is None assert call_entity.call_type is None assert len(call_entity.arguments) == 0 assert len(call_entity.argument_types) == 0 assert len(call_entity.keyword_arguments) == 0 assert len(call_entity.keyword_argument_types) == 0 assert call_entity.args_var_name is None assert call_entity.kwargs_var_name is None assert call_entity.args_var_type is None assert call_entity.kwargs_var_type is None assert call_entity.ast_execution_context == context.current_ast_node assert call_entity.execution_context == context.current_execution_context
def test_call_name_property(call_entity: CallEntity, call_name_entity: VariableEntity): call_entity.set_func(call_name_entity) assert call_entity.name == 'fn'
def call_entity(): return CallEntity(ast_call, Context(Module('test')))