Merge pull request #2446 from Vogtinator/pathfix

Fix osc.core.repository_path_expand
This commit is contained in:
Fabian Vogt 2020-06-10 11:46:27 +02:00 committed by GitHub
commit 3c1b016007
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 23 deletions

View File

@ -409,31 +409,20 @@ def attribute_value_delete(apiurl, project, name, namespace='OSRT', package=None
http_DELETE(makeurl(
apiurl, list(filter(None, ['source', project, package, '_attribute', namespace + ':' + name]))))
@memoize(session=True)
def _repository_path_expand(apiurl, project, repo):
"""Recursively list underlying projects."""
repos = OrderedDict()
meta = ET.fromstringlist(show_project_meta(apiurl, project))
for path in meta.findall('.//repository[@name="{}"]/path'.format(repo)):
rp = repository_path_expand(apiurl, path.get('project', project), path.get('repository'))
for project, repo in rp:
# only the last repo for a project is remembered by OBS
if project in repos:
del repos[project]
repos[project] = repo
return repos
@memoize(session=True)
def repository_path_expand(apiurl, project, repo):
"""Recursively list underlying projects."""
repodict = _repository_path_expand(apiurl, project, repo)
repos = []
repos.append([project, repo])
for project, repo in repodict.items():
repos.append([project, repo])
repos = [[project, repo]]
meta = ET.fromstringlist(show_project_meta(apiurl, project))
paths = meta.findall('.//repository[@name="{}"]/path'.format(repo))
# The listed paths are taken as-is, except for the last one...
for path in paths[:-1]:
repos += [[path.get('project', project), path.get('repository')]]
# ...which is expanded recursively
if len(paths) > 0:
repos += repository_path_expand(apiurl, paths[-1].get('project', project), paths[-1].get('repository'))
return repos
@memoize(session=True)

View File

@ -113,7 +113,7 @@ class TestOrigin(OBSLocal.TestCase):
request = self.wf.create_submit_request(self.randomString('devel'), self.randomString('package'))
self.assertReviewBot(request.reqid, self.bot_user, 'new', 'new')
self.assertOutput(f'skipping {request.reqid} of age')
self.assertOutput(f'since it is younger than 1800s')
self.assertOutput('since it is younger than 1800s')
def test_config(self):
attribute_value_save(self.wf.apiurl, self.target_project, 'OriginConfig', 'origins: []')