From d089481d1e8aa5283b7ff0d0ecc71167d801e176 Mon Sep 17 00:00:00 2001 From: Lin Yang Date: Fri, 12 Sep 2014 14:48:06 +0800 Subject: [PATCH] Support no particular project setting In special case, git-obs-mapping.xml doesn't contain the setting section for particular projects. The script will crash when query mapping on such file. It should check whether this section exists at first. Fixes: #2111 Change-Id: Ib9a80ca135e311b8f8b103298ec300a3a7ba9e42 Signed-off-by: Lin Yang --- common/mapping.py | 53 ++++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/common/mapping.py b/common/mapping.py index 34d1c57..ec919a6 100644 --- a/common/mapping.py +++ b/common/mapping.py @@ -65,32 +65,35 @@ class Mapping(object): def get_submit_mapping(self, project, branch=None): """Get submit mapping though project or branch""" - for prj in self.mapping_obj.project: - if prj.name == project or prj.name == '/' + project: - # submission is blocked, return empty list, otherwise - # return matched OBS target project - return self.__get_mapping(prj, branch) or [] + if self.mapping_obj.project: + for prj in self.mapping_obj.project: + if prj.name == project or prj.name == '/' + project: + # submission is blocked, return empty list, otherwise + # return matched OBS target project + return self.__get_mapping(prj, branch) or [] + elif self.mapping_obj.default: + # Search in path list + prj_path = project + while True: + # parent directory of project/directory + prj_path = os.path.dirname(os.path.join('/', prj_path)) - # Search in path list - prj_path = project - while True: - # parent directory of project/directory - prj_path = os.path.dirname(os.path.join('/', prj_path)) + if prj_path == '/': + for path in self.mapping_obj.default.path: + if path.name == '/': + return self.__get_mapping(path, branch) or [] + # No branch match, return NULL + return [] - if prj_path == '/': + # Search path for path in self.mapping_obj.default.path: - if path.name == '/': + # path match + if os.path.dirname(path.name+'/') == prj_path: + # path pattern match projects blocked + # + # + # + # return self.__get_mapping(path, branch) or [] - # No branch match, return NULL - return [] - - # Search path - for path in self.mapping_obj.default.path: - # path match - if os.path.dirname(path.name+'/') == prj_path: - # path pattern match projects blocked - # - # - # - # - return self.__get_mapping(path, branch) or [] + else: + return [] -- 2.7.4