def _parse_gitmodules(dspath): gitmodule_path = opj(dspath, ".gitmodules") parser = GitConfigParser(gitmodule_path) mods = {} for sec in parser.sections(): modpath = parser.get_value(sec, 'path', default=0) if not modpath or not sec.startswith('submodule '): continue modpath = normpath(opj(dspath, modpath)) modprops = {'gitmodule_{}'.format(opt): parser.get_value(sec, opt) for opt in parser.options(sec) if not (opt.startswith('__') or opt == 'path')} modprops['gitmodule_name'] = sec[11:-1] mods[modpath] = modprops return mods
def test_base(self): path_repo = fixture_path("git_config") path_global = fixture_path("git_config_global") r_config = GitConfigParser([path_repo, path_global], read_only=True) assert r_config.read_only num_sections = 0 num_options = 0 # test reader methods assert r_config._is_initialized is False for section in r_config.sections(): num_sections += 1 for option in r_config.options(section): num_options += 1 val = r_config.get(section, option) val_typed = r_config.get_value(section, option) assert isinstance(val_typed, ( bool, int, float, ) + string_types) assert val assert "\n" not in option assert "\n" not in val # writing must fail with self.assertRaises(IOError): r_config.set(section, option, None) with self.assertRaises(IOError): r_config.remove_option(section, option) # END for each option with self.assertRaises(IOError): r_config.remove_section(section) # END for each section assert num_sections and num_options assert r_config._is_initialized is True # get value which doesnt exist, with default default = "my default value" assert r_config.get_value("doesnt", "exist", default) == default # it raises if there is no default though with self.assertRaises(cp.NoSectionError): r_config.get_value("doesnt", "exist")
def test_base(self): path_repo = fixture_path("git_config") path_global = fixture_path("git_config_global") r_config = GitConfigParser([path_repo, path_global], read_only=True) assert r_config.read_only num_sections = 0 num_options = 0 # test reader methods assert r_config._is_initialized is False for section in r_config.sections(): num_sections += 1 for option in r_config.options(section): num_options += 1 val = r_config.get(section, option) val_typed = r_config.get_value(section, option) assert isinstance(val_typed, (bool, int, float, ) + string_types) assert val assert "\n" not in option assert "\n" not in val # writing must fail with self.assertRaises(IOError): r_config.set(section, option, None) with self.assertRaises(IOError): r_config.remove_option(section, option) # END for each option with self.assertRaises(IOError): r_config.remove_section(section) # END for each section assert num_sections and num_options assert r_config._is_initialized is True # get value which doesnt exist, with default default = "my default value" assert r_config.get_value("doesnt", "exist", default) == default # it raises if there is no default though with self.assertRaises(cp.NoSectionError): r_config.get_value("doesnt", "exist")
def _parse_gitmodules(dspath): gitmodule_path = opj(dspath, ".gitmodules") parser = GitConfigParser(gitmodule_path) mods = {} for sec in parser.sections(): try: modpath = parser.get(sec, 'path') except Exception: lgr.debug("Failed to get '%s.path', skipping section", sec) continue if not modpath or not sec.startswith('submodule '): continue modpath = normpath(opj(dspath, modpath)) modprops = {'gitmodule_{}'.format(opt): parser.get_value(sec, opt) for opt in parser.options(sec) if not (opt.startswith('__') or opt == 'path')} modprops['gitmodule_name'] = sec[11:-1] mods[modpath] = modprops # make sure we let go of any resources held be the parser # we cannot rely on __del__ parser.release() return mods