Пример #1
0
    def visit_FunctionDef(self, node):
        """Visitor for AST FunctionDef nodes

        add relevant information about the node to
        the context for use in tests which inspect function definitions.
        Add the function name to the current namespace for all descendants.
        :param node: The node that is being inspected
        :return: -
        """

        self.context["function"] = node

        if self.debug:
            logger.debug("visit_FunctionDef called (%s)", ast.dump(node))

        qualname = self.namespace + "." + b_utils.get_func_name(node)
        name = qualname.split(".")[-1]

        self.context["qualname"] = qualname
        self.context["name"] = name

        # For all child nodes and any tests run, add this function name to
        # current namespace
        self.namespace = b_utils.namespace_path_join(self.namespace, name)
        self.update_scores(self.tester.run_tests(self.context, "FunctionDef"))
        self.generic_visit(node)
        self.namespace = b_utils.namespace_path_split(self.namespace)[0]
Пример #2
0
    def visit_FunctionDef(self, node):
        '''Visitor for AST FunctionDef nodes

        add relevant information about the node to
        the context for use in tests which inspect function definitions.
        Add the function name to the current namespace for all descendants.
        :param node: The node that is being inspected
        :return: -
        '''

        self.context['function'] = node

        if self.debug:
            self.logger.debug("visit_FunctionDef called (%s)", ast.dump(node))

        qualname = self.namespace + '.' + b_utils.get_func_name(node)
        name = qualname.split('.')[-1]

        self.context['qualname'] = qualname
        self.context['name'] = name

        # For all child nodes and any tests run, add this function name to
        # current namespace
        self.namespace = b_utils.namespace_path_join(self.namespace, name)
        self.update_scores(self.tester.run_tests(self.context, 'FunctionDef'))
        self.generic_visit(node)
        self.namespace = b_utils.namespace_path_split(self.namespace)[0]
Пример #3
0
    def post_visit(self, node):
        self.depth -= 1
        LOG.debug("%s\texiting : %s", self.depth, hex(id(node)))

        # HACK(tkelsey): this is needed to clean up post-recursion stuff that
        # gets setup in the visit methods for these node types.
        if isinstance(node, ast.FunctionDef) or isinstance(node, ast.ClassDef):
            self.namespace = b_utils.namespace_path_split(self.namespace)[0]
Пример #4
0
    def post_visit(self, node):
        self.depth -= 1
        logger.debug("%s\texiting : %s", self.depth, hex(id(node)))

        # HACK(tkelsey): this is needed to clean up post-recursion stuff that
        # gets setup in the visit methods for these node types.
        if isinstance(node, ast.FunctionDef) or isinstance(node, ast.ClassDef):
            self.namespace = b_utils.namespace_path_split(self.namespace)[0]
Пример #5
0
    def visit_ClassDef(self, node):
        """Visitor for AST ClassDef node

        Add class name to current namespace for all descendants.
        :param node: Node being inspected
        :return: -
        """

        if self.debug:
            logger.debug("visit_ClassDef called (%s)", ast.dump(node))

        # For all child nodes, add this class name to current namespace
        self.namespace = b_utils.namespace_path_join(self.namespace, node.name)
        self.generic_visit(node)
        self.namespace = b_utils.namespace_path_split(self.namespace)[0]
Пример #6
0
    def visit_ClassDef(self, node):
        '''Visitor for AST ClassDef node

        Add class name to current namespace for all descendants.
        :param node: Node being inspected
        :return: -
        '''

        if self.debug:
            self.logger.debug("visit_ClassDef called (%s)", ast.dump(node))

        # For all child nodes, add this class name to current namespace
        self.namespace = b_utils.namespace_path_join(self.namespace, node.name)
        self.generic_visit(node)
        self.namespace = b_utils.namespace_path_split(self.namespace)[0]
Пример #7
0
 def test_namespace_path_split(self):
     (head, tail) = b_utils.namespace_path_split('base1.base2.name')
     self.assertEqual('base1.base2', head)
     self.assertEqual('name', tail)
Пример #8
0
 def test_namespace_path_split(self):
     (head, tail) = b_utils.namespace_path_split('base1.base2.name')
     self.assertEqual('base1.base2', head)
     self.assertEqual('name', tail)
Пример #9
0
 def test_namespace_path_split(self):
     (head, tail) = b_utils.namespace_path_split("base1.base2.name")
     self.assertEqual("base1.base2", head)
     self.assertEqual("name", tail)
Пример #10
0
 def test_namespace_path_split(self):
     (head, tail) = b_utils.namespace_path_split("base1.base2.name")
     self.assertEqual("base1.base2", head)
     self.assertEqual("name", tail)