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
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)
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())
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())
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())
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)