mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-02 02:11:19 +08:00
Fix another place where test results depend on the yaml parsing order.
This commit is contained in:
@@ -491,8 +491,16 @@ def _scm_get_latest(pkg):
|
||||
pkgref = module_build_service.scm.SCM(
|
||||
pkg.repository).get_latest(branch=pkg.ref)
|
||||
except Exception as e:
|
||||
return True, "Failed to get the latest commit for %s#%s" % (pkg.repository, pkg.ref)
|
||||
return False, (pkg.name, pkgref)
|
||||
log.exception(e)
|
||||
return {
|
||||
'error': "Failed to get the latest commit for %s#%s" % (pkg.repository, pkg.ref)
|
||||
}
|
||||
|
||||
return {
|
||||
'pkg_name': pkg.name,
|
||||
'pkg_ref': pkgref,
|
||||
'error': None
|
||||
}
|
||||
|
||||
def format_mmd(mmd, scmurl):
|
||||
"""
|
||||
@@ -582,26 +590,28 @@ def format_mmd(mmd, scmurl):
|
||||
# pkg.ref by real SCM hash and store the result to our private xmd
|
||||
# place in modulemd.
|
||||
pool = ThreadPool(20)
|
||||
pkgrefs = pool.map(_scm_get_latest, mmd.components.rpms.values())
|
||||
pkg_dicts = pool.map(_scm_get_latest, mmd.components.rpms.values())
|
||||
err_msg = ""
|
||||
for is_error, pkgref in pkgrefs:
|
||||
if is_error:
|
||||
err_msg += pkgref + "\n"
|
||||
for pkg_dict in pkg_dicts:
|
||||
if pkg_dict["error"]:
|
||||
err_msg += pkg_dict["error"] + "\n"
|
||||
else:
|
||||
mmd.xmd['mbs']['rpms'][pkgref[0]] = {'ref': pkgref[1]}
|
||||
pkg_name = pkg_dict["pkg_name"]
|
||||
pkg_ref = pkg_dict["pkg_ref"]
|
||||
mmd.xmd['mbs']['rpms'][pkg_name] = {'ref': pkg_ref}
|
||||
if err_msg:
|
||||
raise UnprocessableEntity(err_msg)
|
||||
|
||||
def merge_included_mmd(main_mmd, mmd):
|
||||
def merge_included_mmd(mmd, included_mmd):
|
||||
"""
|
||||
Merges two modulemds. This merges only metadata which are needed in
|
||||
the `main_mmd` when it includes another module defined by `mmd`
|
||||
the `main` when it includes another module defined by `included_mmd`
|
||||
"""
|
||||
if 'rpms' in mmd.xmd['mbs']:
|
||||
if 'rpms' not in main_mmd.xmd['mbs']:
|
||||
main_mmd.xmd['mbs']['rpms'] = mmd.xmd['mbs']['rpms']
|
||||
if 'rpms' in included_mmd.xmd['mbs']:
|
||||
if 'rpms' not in mmd.xmd['mbs']:
|
||||
mmd.xmd['mbs']['rpms'] = included_mmd.xmd['mbs']['rpms']
|
||||
else:
|
||||
main_mmd.xmd['mbs']['rpms'].update(mmd.xmd['mbs']['rpms'])
|
||||
mmd.xmd['mbs']['rpms'].update(included_mmd.xmd['mbs']['rpms'])
|
||||
|
||||
def record_component_builds(mmd, module, initial_batch = 1,
|
||||
previous_buildorder = None, main_mmd = None):
|
||||
|
||||
@@ -29,8 +29,8 @@ data:
|
||||
ref: f25
|
||||
perl-Tangerine:
|
||||
rationale: Provides API for this module and is a dependency of tangerine.
|
||||
ref: f25
|
||||
ref: f24
|
||||
tangerine:
|
||||
rationale: Provides API for this module.
|
||||
buildorder: 10
|
||||
ref: f25
|
||||
ref: f23
|
||||
|
||||
@@ -265,8 +265,8 @@ class TestBuild(unittest.TestCase):
|
||||
|
||||
# Check that components are tagged after the batch is built.
|
||||
tag_groups = []
|
||||
tag_groups.append(set([u'perl-Tangerine?#f25-1-1', u'perl-List-Compare?#f25-1-1']))
|
||||
tag_groups.append(set([u'tangerine?#f25-1-1']))
|
||||
tag_groups.append(set([u'perl-Tangerine?#f24-1-1', u'perl-List-Compare?#f25-1-1']))
|
||||
tag_groups.append(set([u'tangerine?#f23-1-1']))
|
||||
|
||||
def on_tag_artifacts_cb(cls, artifacts):
|
||||
self.assertEqual(tag_groups.pop(0), set(artifacts))
|
||||
@@ -277,8 +277,8 @@ class TestBuild(unittest.TestCase):
|
||||
# is built.
|
||||
buildroot_groups = []
|
||||
buildroot_groups.append(set([u'module-build-macros-0.1-1.module_fc4ed5f7.src.rpm-1-1']))
|
||||
buildroot_groups.append(set([u'perl-Tangerine?#f25-1-1', u'perl-List-Compare?#f25-1-1']))
|
||||
buildroot_groups.append(set([u'tangerine?#f25-1-1']))
|
||||
buildroot_groups.append(set([u'perl-Tangerine?#f24-1-1', u'perl-List-Compare?#f25-1-1']))
|
||||
buildroot_groups.append(set([u'tangerine?#f23-1-1']))
|
||||
|
||||
def on_buildroot_add_artifacts_cb(cls, artifacts, install):
|
||||
self.assertEqual(buildroot_groups.pop(0), set(artifacts))
|
||||
|
||||
@@ -81,12 +81,16 @@ class TestUtils(unittest.TestCase):
|
||||
mocked_scm.return_value.commit = \
|
||||
'620ec77321b2ea7b0d67d82992dda3e1d67055b4'
|
||||
# For all the RPMs in testmodule, get_latest is called
|
||||
hashes_returned = [
|
||||
'4ceea43add2366d8b8c5a622a2fb563b625b9abf',
|
||||
'fbed359411a1baa08d4a88e0d12d426fbf8f602c',
|
||||
'76f9d8c8e87eed0aab91034b01d3d5ff6bd5b4cb']
|
||||
original_refs = ["f25"]
|
||||
mocked_scm.return_value.get_latest.side_effect = hashes_returned
|
||||
hashes_returned = {
|
||||
'f24': '4ceea43add2366d8b8c5a622a2fb563b625b9abf',
|
||||
'f23': 'fbed359411a1baa08d4a88e0d12d426fbf8f602c',
|
||||
'f25': '76f9d8c8e87eed0aab91034b01d3d5ff6bd5b4cb'}
|
||||
original_refs = ["f23", "f24", "f25"]
|
||||
|
||||
def mocked_get_latest(branch = "master"):
|
||||
return hashes_returned[branch]
|
||||
|
||||
mocked_scm.return_value.get_latest = mocked_get_latest
|
||||
mmd = modulemd.ModuleMetadata()
|
||||
with open(path.join(BASE_DIR, '..', 'staged_data', 'testmodule.yaml')) \
|
||||
as mmd_file:
|
||||
@@ -96,11 +100,6 @@ class TestUtils(unittest.TestCase):
|
||||
'?#620ec77321b2ea7b0d67d82992dda3e1d67055b4')
|
||||
module_build_service.utils.format_mmd(mmd, scmurl)
|
||||
|
||||
# Make sure all the commit hashes were properly set in xmd section
|
||||
# of modulemd.
|
||||
xmd_pkg_refs = [pkg['ref'] for pkg in mmd.xmd['mbs']['rpms'].values()]
|
||||
self.assertEqual(set(xmd_pkg_refs), set(hashes_returned))
|
||||
|
||||
# Make sure that original refs are not changed.
|
||||
mmd_pkg_refs = [pkg.ref for pkg in mmd.components.rpms.values()]
|
||||
self.assertEqual(set(mmd_pkg_refs), set(original_refs))
|
||||
@@ -121,6 +120,7 @@ class TestUtils(unittest.TestCase):
|
||||
'.git?#620ec77321b2ea7b0d67d82992dda3e1d67055b4',
|
||||
}
|
||||
}
|
||||
|
||||
self.assertEqual(mmd.xmd, xmd)
|
||||
|
||||
@vcr.use_cassette(
|
||||
@@ -128,10 +128,13 @@ class TestUtils(unittest.TestCase):
|
||||
@patch('module_build_service.scm.SCM')
|
||||
def test_format_mmd_empty_scmurl(self, mocked_scm):
|
||||
# For all the RPMs in testmodule, get_latest is called
|
||||
mocked_scm.return_value.get_latest.side_effect = [
|
||||
'4ceea43add2366d8b8c5a622a2fb563b625b9abf',
|
||||
'fbed359411a1baa08d4a88e0d12d426fbf8f602c',
|
||||
'76f9d8c8e87eed0aab91034b01d3d5ff6bd5b4cb']
|
||||
hashes_returned = {
|
||||
'f24': '4ceea43add2366d8b8c5a622a2fb563b625b9abf',
|
||||
'f23': 'fbed359411a1baa08d4a88e0d12d426fbf8f602c',
|
||||
'f25': '76f9d8c8e87eed0aab91034b01d3d5ff6bd5b4cb'}
|
||||
def mocked_get_latest(branch = "master"):
|
||||
return hashes_returned[branch]
|
||||
mocked_scm.return_value.get_latest = mocked_get_latest
|
||||
|
||||
mmd = modulemd.ModuleMetadata()
|
||||
with open(path.join(BASE_DIR, '..', 'staged_data', 'testmodule.yaml')) \
|
||||
|
||||
@@ -536,9 +536,9 @@ class TestViews(unittest.TestCase):
|
||||
# Test that RPMs are properly merged in case of included modules in mmd.
|
||||
xmd_rpms = {'ed': {'ref': '40bd001563'},
|
||||
'perl-List-Compare': {'ref': '2ee8474e44'},
|
||||
'tangerine': {'ref': '2ee8474e44'},
|
||||
'tangerine': {'ref': 'd29d5c24b8'},
|
||||
'file': {'ref': 'a2740663f8'},
|
||||
'perl-Tangerine': {'ref': '2ee8474e44'}}
|
||||
'perl-Tangerine': {'ref': '27785f9f05'}}
|
||||
self.assertEqual(mmd.xmd['mbs']['rpms'], xmd_rpms)
|
||||
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
|
||||
Reference in New Issue
Block a user