Fix requirements loop warning
When we changed the result of the fake build for a requirements failure from "SKIPPED" we forgot to update a place that checks for that in order to prevent loops. We also should use "FAILURE" for consistency. Change-Id: Ifd35b18040dea6d995582c8848f159d448232bfb Co-Authored-By: James E. Blair <jeblair@redhat.com>
This commit is contained in:
parent
b0252eef9d
commit
eb003cdc99
|
@ -0,0 +1,42 @@
|
|||
- pipeline:
|
||||
name: check
|
||||
manager: independent
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: patchset-created
|
||||
success:
|
||||
gerrit:
|
||||
Verified: 1
|
||||
resultsdb_mysql: null
|
||||
resultsdb_postgresql: null
|
||||
failure:
|
||||
gerrit:
|
||||
Verified: -1
|
||||
resultsdb_mysql: null
|
||||
resultsdb_postgresql: null
|
||||
|
||||
- job:
|
||||
name: base
|
||||
parent: null
|
||||
run: playbooks/base.yaml
|
||||
|
||||
- job:
|
||||
name: image-builder
|
||||
provides: images
|
||||
|
||||
- job:
|
||||
name: image-user
|
||||
requires: images
|
||||
dependencies:
|
||||
- image-builder
|
||||
|
||||
- job:
|
||||
name: hold
|
||||
|
||||
- project:
|
||||
name: org/project1
|
||||
check:
|
||||
jobs:
|
||||
- image-builder
|
||||
- image-user
|
||||
- hold
|
|
@ -5836,8 +5836,39 @@ class TestProvidesRequires(ZuulDBTestCase):
|
|||
dict(name='hold', result='SUCCESS', changes='1,1'),
|
||||
dict(name='hold', result='SUCCESS', changes='1,1 2,1'),
|
||||
], ordered=False)
|
||||
self.assertIn('image-user : FAILED', B.messages[0])
|
||||
self.assertIn('not met by build', B.messages[0])
|
||||
self.assertIn('image-user : FAILURE', B.messages[0])
|
||||
self.assertEqual(B.messages[0].count("not met by build"), 2)
|
||||
|
||||
@simple_layout('layouts/provides-requires-single-project.yaml')
|
||||
def test_provides_requires_check_old_failure_single_project(self):
|
||||
# Similar to above test, but has job dependencies which will
|
||||
# cause the requirements check to potentially run multiple
|
||||
# times as the queue processor runs repeatedly.
|
||||
A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
|
||||
self.executor_server.failJob('image-builder', A)
|
||||
self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
|
||||
self.waitUntilSettled()
|
||||
|
||||
self.assertHistory([
|
||||
dict(name='image-builder', result='FAILURE', changes='1,1'),
|
||||
dict(name='hold', result='SUCCESS', changes='1,1'),
|
||||
], ordered=False)
|
||||
self.assertIn('image-user : SKIPPED', A.messages[0])
|
||||
|
||||
B = self.fake_gerrit.addFakeChange('org/project1', 'master', 'B')
|
||||
B.data['commitMessage'] = '%s\n\nDepends-On: %s\n' % (
|
||||
B.subject, A.data['id'])
|
||||
self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
|
||||
self.waitUntilSettled()
|
||||
|
||||
self.assertHistory([
|
||||
dict(name='image-builder', result='FAILURE', changes='1,1'),
|
||||
dict(name='hold', result='SUCCESS', changes='1,1'),
|
||||
dict(name='image-builder', result='FAILURE', changes='1,1 2,1'),
|
||||
dict(name='hold', result='SUCCESS', changes='1,1 2,1'),
|
||||
], ordered=False)
|
||||
self.assertIn('image-user : FAILURE', B.messages[0])
|
||||
self.assertEqual(B.messages[0].count("not met by build"), 1)
|
||||
|
||||
|
||||
class TestForceMergeMissingTemplate(ZuulTestCase):
|
||||
|
|
|
@ -2382,7 +2382,7 @@ class QueueItem(object):
|
|||
except RequirementsError as e:
|
||||
self.warning(str(e))
|
||||
fakebuild = Build(job, None)
|
||||
fakebuild.result = 'FAILED'
|
||||
fakebuild.result = 'FAILURE'
|
||||
self.addBuild(fakebuild)
|
||||
ret = True
|
||||
return ret
|
||||
|
@ -2466,7 +2466,7 @@ class QueueItem(object):
|
|||
build = build_set.getBuild(job.name)
|
||||
if build and (build.result == 'SUCCESS' or build.paused):
|
||||
successful_job_names.add(job.name)
|
||||
elif build and build.result == 'SKIPPED':
|
||||
elif build and build.result in ('SKIPPED', 'FAILURE'):
|
||||
pass
|
||||
else:
|
||||
nodeset = build_set.getJobNodeSet(job.name)
|
||||
|
|
Loading…
Reference in New Issue