mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-15 07:49:57 +08:00
Merge #360 Fix format_mmd function for empty scmurl
This commit is contained in:
@@ -506,23 +506,23 @@ def format_mmd(mmd, scmurl):
|
||||
# them because of dep-chain.
|
||||
from module_build_service.scm import SCM
|
||||
|
||||
mmd.xmd['mbs'] = {'scmurl': scmurl}
|
||||
mmd.xmd['mbs'] = {'scmurl': scmurl, 'commit': None}
|
||||
|
||||
scm = SCM(scmurl)
|
||||
# If a commit hash is provided, add that information to the modulemd
|
||||
if scm.commit:
|
||||
# We want to make sure we have the full commit hash for consistency
|
||||
if SCM.is_full_commit_hash(scm.scheme, scm.commit):
|
||||
full_scm_hash = scm.commit
|
||||
else:
|
||||
full_scm_hash = scm.get_full_commit_hash()
|
||||
|
||||
mmd.xmd['mbs']['commit'] = full_scm_hash
|
||||
# If a commit hash wasn't provided then just get the latest from master
|
||||
else:
|
||||
# If module build was submitted via yaml file, there is no scmurl
|
||||
if scmurl:
|
||||
scm = SCM(scmurl)
|
||||
mmd.xmd['mbs']['commit'] = scm.get_latest()
|
||||
# If a commit hash is provided, add that information to the modulemd
|
||||
if scm.commit:
|
||||
# We want to make sure we have the full commit hash for consistency
|
||||
if SCM.is_full_commit_hash(scm.scheme, scm.commit):
|
||||
full_scm_hash = scm.commit
|
||||
else:
|
||||
full_scm_hash = scm.get_full_commit_hash()
|
||||
|
||||
mmd.xmd['mbs']['commit'] = full_scm_hash
|
||||
# If a commit hash wasn't provided then just get the latest from master
|
||||
else:
|
||||
mmd.xmd['mbs']['commit'] = scm.get_latest()
|
||||
|
||||
# If the modulemd yaml specifies module buildrequires, replace the streams
|
||||
# with commit hashes
|
||||
@@ -537,7 +537,7 @@ def format_mmd(mmd, scmurl):
|
||||
'version': module_stream}
|
||||
commit_hash, version = get_module_commit_hash_and_version(
|
||||
pdc, module_info)
|
||||
if commit_hash and version:
|
||||
if version and (commit_hash or not scmurl):
|
||||
mmd.xmd['mbs']['buildrequires'][module_name] = {
|
||||
'ref': commit_hash,
|
||||
'stream': mmd.buildrequires[module_name],
|
||||
@@ -793,6 +793,7 @@ def get_reusable_component(session, module, component_name):
|
||||
previous_module_build = session.query(models.ModuleBuild)\
|
||||
.filter_by(name=mmd.name)\
|
||||
.filter(models.ModuleBuild.state.in_([3, 5]))\
|
||||
.filter(models.ModuleBuild.scmurl.isnot(None))\
|
||||
.order_by(models.ModuleBuild.time_completed.desc())\
|
||||
.first()
|
||||
# The component can't be reused if there isn't a previous build in the done
|
||||
@@ -831,8 +832,9 @@ def get_reusable_component(session, module, component_name):
|
||||
# Assumes that the streams have been replaced with commit hashes, so we
|
||||
# can compare to see if they have changed. Since a build is unique to
|
||||
# a commit hash, this is a safe test.
|
||||
if br_module['ref'] != \
|
||||
old_mmd.xmd['mbs']['buildrequires'][br_module_name]['ref']:
|
||||
ref1 = br_module.get('ref')
|
||||
ref2 = old_mmd.xmd['mbs']['buildrequires'][br_module_name].get('ref')
|
||||
if not (ref1 and ref2) or ref1 != ref2:
|
||||
return None
|
||||
|
||||
# At this point we've determined that both module builds depend(ed) on the
|
||||
|
||||
@@ -115,6 +115,35 @@ class TestUtils(unittest.TestCase):
|
||||
}
|
||||
self.assertEqual(mmd.xmd, xmd)
|
||||
|
||||
@vcr.use_cassette(
|
||||
path.join(CASSETTES_DIR, 'tests.test_utils.TestUtils.test_format_mmd'))
|
||||
@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']
|
||||
|
||||
mmd = modulemd.ModuleMetadata()
|
||||
with open(path.join(BASE_DIR, '..', 'staged_data', 'testmodule.yaml')) \
|
||||
as mmd_file:
|
||||
mmd.loads(mmd_file)
|
||||
|
||||
module_build_service.utils.format_mmd(mmd, scmurl=None)
|
||||
xmd = {
|
||||
'mbs': {
|
||||
'commit': None,
|
||||
'buildrequires': {
|
||||
'base-runtime': {
|
||||
'ref': 'abffed45ca33d7fe94fff8253b5bfe1d87e786b2',
|
||||
'stream': 'master',
|
||||
'version': '20170315134803'}},
|
||||
'scmurl': None,
|
||||
}
|
||||
}
|
||||
self.assertEqual(mmd.xmd, xmd)
|
||||
|
||||
def test_get_reusable_component_same(self):
|
||||
test_reuse_component_init_data()
|
||||
new_module = models.ModuleBuild.query.filter_by(id=2).one()
|
||||
@@ -122,6 +151,19 @@ class TestUtils(unittest.TestCase):
|
||||
db.session, new_module, 'tangerine')
|
||||
self.assertEqual(rv.package, 'tangerine')
|
||||
|
||||
def test_get_reusable_component_empty_scmurl(self):
|
||||
test_reuse_component_init_data()
|
||||
|
||||
new_module = models.ModuleBuild.query.filter_by(id=2).one()
|
||||
mmd = new_module.mmd()
|
||||
mmd.xmd['mbs']['buildrequires'] = {'base-runtime': {}}
|
||||
new_module.modulemd = mmd.dumps()
|
||||
db.session.commit()
|
||||
|
||||
rv = module_build_service.utils.get_reusable_component(
|
||||
db.session, new_module, 'tangerine')
|
||||
self.assertEqual(rv, None)
|
||||
|
||||
def test_get_reusable_component_different_perl_tangerine(self):
|
||||
test_reuse_component_init_data()
|
||||
second_module_build = models.ModuleBuild.query.filter_by(id=2).one()
|
||||
|
||||
Reference in New Issue
Block a user