Beispiel #1
0
    def _handle_node(self, node):
        """
        Args:
            node : BrocNode object of module
        Raises:
            if handle node failed, raise BrocTreeError
        """
        # self._logger.LevPrint("MSG", "handle node(%s) ..." % node.module.name)
        # if node.module.url has been handled in other module's BROC
        # Key is module's cvspath + branch kind + tag name or branch name.
        # Key can't be module's url because ,in git any branch or tag has a same url.
        if node.module.br_kind == BrocModule_pb2.Module.TAG:
            key = node.module.module_cvspath + str(
                node.module.br_kind) + node.module.tag_name
        else:
            key = node.module.module_cvspath + str(
                node.module.br_kind) + node.module.br_name
        if key in self._done_broc:
            for kid_node in self._done_broc[key]:
                node.AddChild(kid_node)
            return

        try:
            # to fetch BROC file
            # self._logger.LevPrint("MSG", "fetch node(%s) BROC" % node.module.name)
            broc_path = self._check_broc(node)
            if broc_path is None:
                self._logger.LevPrint("ERROR", "fetch BROC failed")
                return
            # get CONFIGS from BROC
            configs = PlanishUtil.GetConfigsFromBroc(broc_path)
            kids = PlanishUtil.ParseConfigs(configs, node.module.workspace,
                                            node.module.dep_level + 1,
                                            node.module.repo_kind,
                                            self._repo_domain,
                                            self._postfix[0], self._postfix[1])
        except BaseException as err:
            self._logger.LevPrint("ERROR",
                                  "parse BROC(%s) failed" % node.module.url)
            raise BrocTreeError(str(err))

        kid_nodes = []
        for kid in kids:
            kid_node = BrocNode(kid, node, False)
            kid_nodes.append(kid_node)
            node.AddChild(kid_node)
            self._add_node(kid_node)
            self._node_queue.put(kid_node)
        # record the done broc file to prevernt from parse again
        self._done_broc[key] = kid_nodes
Beispiel #2
0
 def handle_configs(self, s, parent):
     """
     Args:
         s : xx@xx@xx set at tag CONFIGS
         parent : the BrocNode object
     """
     if s in self._checked_configs:
         return
     tree = BrocTree.BrocTree()
     repo_domain = BrocConfig.BrocConfig().RepoDomain(parent.module.repo_kind)
     postfix_branch = BrocConfig.BrocConfig().SVNPostfixBranch()
     postfix_tag = BrocConfig.BrocConfig().SVNPostfixTag()
     child_module = PlanishUtil.ParseConfig(s,
                                    parent.module.workspace,
                                    parent.module.dep_level + 1,
                                    parent.module.repo_kind,
                                    repo_domain,
                                    postfix_branch,
                                    postfix_tag)
     # Log.Log().LevPrint("MSG", 'create node(%s), level %d' % (s, child_module.dep_level))
     child_node = BrocTree.BrocNode(child_module, parent, False)
     parent.AddChild(child_node)
     self.AddNode(child_node)
     self._queue.put(child_node)
     self._checked_configs.add(s)
Beispiel #3
0
 def test_singleton(self):
     """
     Test singleton interface 
     """
     logger = Log.Log()
     repo_domain = 'https://github.com'
     postfix = ['trunk', 'BRANCH', 'PD_BL']
     root = PlanishUtil.CreateBrocModuleFromDir("..", repo_domain,
                                                postfix[1], postfix[2],
                                                logger)
     loader1 = Syntax.BrocLoader()
     loader2 = Syntax.BrocLoader()
     self.assertEqual(loader1.Id(), loader2.Id())
Beispiel #4
0
 def test_load_broc(self):
     """
     """
     logger = Log.Log()
     repo_domain = 'https://github.com'
     postfix = ['trunk', 'BRANCH', 'PD_BL']
     root = PlanishUtil.CreateBrocModuleFromDir("..", repo_domain,
                                                postfix[1], postfix[2],
                                                logger)
     node = BrocTree.BrocNode(root, None, True)
     Syntax.BrocLoader().SetRoot(node)
     Syntax.BrocLoader().LoadBROC()
     if Syntax.BrocLoader().LackBrocModules():
         print(Syntax.BrocLoader().LackBrocModules())
Beispiel #5
0
 def test_singleton(self):
     """
     Test singleton interface 
     """
     logger = Log.Log()
     repo_domain = 'https://github.com'
     postfix = ['trunk', 'BRANCH', 'PD_BL']
     root = PlanishUtil.CreateBrocModuleFromDir("..", repo_domain,
                                                postfix[1], postfix[2],
                                                logger)
     tree = BrocTree.BrocTree()
     tree.SetRoot(root)
     tree1 = BrocTree.BrocTree()
     tree2 = BrocTree.BrocTree()
     self.assertEqual(tree.Id(), tree1.Id())
     self.assertEqual(tree.Id(), tree2.Id())
Beispiel #6
0
    def test_git_module(self):
        """
        """
        logger = Log.Log()
        repo_domain = 'https://github.com'
        postfix = ['trunk', 'BRANCH', 'PD_BL']
        root = PlanishUtil.CreateBrocModuleFromDir("..", repo_domain,
                                                   postfix[1], postfix[2],
                                                   logger)

        self.assertTrue(root.is_main)
        self.assertFalse(root.tag_name)
        self.assertTrue(root.br_name)
        self.assertEqual(root.name, 'broc')
        self.assertEqual(root.dep_level, 0)
        self.assertEqual(root.repo_kind, 2)
        self.assertEqual(root.br_kind, 3)