[TIC-CORE] Logger support and add test-cast for repodata
[archive/20170607/tools/tic-core.git] / tic / parser / repo_parser.py
index f545bbb..f979ca5 100644 (file)
@@ -21,6 +21,7 @@
 
 from lxml import etree
 from tic.utils.error import TICError
+import logging
 import re
 
 class RepodataParser(object):
@@ -29,6 +30,7 @@ class RepodataParser(object):
         self.repodata_list = repodata_list
         
     def _xml_parse(self, pkg_group, tree, tag_dic):
+        logger = logging.getLogger(__name__)
         meta_prefix = 'building-block'
         meta_prefix_root = 'building-block-root-'
         meta_prefix_sub1 = 'building-block-sub1-'
@@ -53,7 +55,7 @@ class RepodataParser(object):
             # check whether a package is duplicated. 
             if pkg_name in pkg2id:
                 #TODO: Apply to policy of duplication
-                print('Package(', pkg_name, ') is duplicated. exclude the package')
+                logger.warning('package(%s) is duplicated. exclude this package', pkg_name)
                 continue
             else:
                 pkg2id[pkg_name] = pkg_id
@@ -72,15 +74,13 @@ class RepodataParser(object):
                 elif meta_match.group('meta') == 'sub1':
                     sub1_match = meta_sub1_pattern.search(meta_match.group('pkgname'))
                     meta_info['sub1'].append([pkg_info['name'],
-                                              ''.join([meta_prefix_root, sub1_match.group('root')]),
-                                              ])
+                                              ''.join([meta_prefix_root, sub1_match.group('root')])])
                     pkg_info['meta'] = 'sub1'
                 elif meta_match.group('meta') == 'sub2':
                     sub2_match = meta_sub2_pattern.search(meta_match.group('pkgname'))
                     meta_info['sub2'].append([pkg_info['name'],
                                               ''.join([meta_prefix_root, sub2_match.group('root')]),
-                                              ''.join([meta_prefix_sub1, sub2_match.group('root'),'-', sub2_match.group('sub1')])
-                                              ])
+                                              ''.join([meta_prefix_sub1, sub2_match.group('root'),'-', sub2_match.group('sub1')])])
                     pkg_info['meta'] = 'sub2'
                 pkg_info['nodes'] = []
             
@@ -155,6 +155,7 @@ class RepodataParser(object):
             pkg_id += 1
     
     def _prepare_requires_id(self, pkg_group):
+        logger = logging.getLogger(__name__)
         pkg_list = pkg_group.get('pkg_list')
         pkg2id = pkg_group.get('pkg2id')
         provides2id = pkg_group.get('provides2id')
@@ -176,8 +177,7 @@ class RepodataParser(object):
                     else:
                         #TODO: Exception Check
                         # the dependent package does not exist.
-                        #print('_req_parse::', req_name, ' does not exist')
-                        pass
+                        logger.warning('"%s" required by "%s" does not exist.', req_name, pkg_list[pkg_id].get('name'))
     
     def _get_tagname(self, tree):
         root = tree.getroot()
@@ -205,15 +205,13 @@ class RepodataParser(object):
         if not self.repodata_list:
             return None
         
-        #TODO: repo URL validation
-        
         tree_list = []
         try:
             for repodata in self.repodata_list:
                 tree = etree.parse(repodata['primary'])
                 tree_list.append(tree)
         except etree.XMLSyntaxError as e:
-            raise TICError('primary.xml syntax error.')
+            raise TICError('primary.xml syntax error. %s', e)
         
         tag_dic = self._get_tagname(tree_list[0])
         
@@ -221,7 +219,7 @@ class RepodataParser(object):
                          pkg2id={},
                          provides2id={},
                          file2id={},
-                         meta_info=dict(root=[],sub1=[],sub2=[]))
+                         meta_info=dict(root=[], sub1=[], sub2=[]))
         
         # parses the repodata (primary.xml)
         for tree in tree_list: