[FIX] runbot: make nb_testing count correct when children are duplicates

This commit is contained in:
Xavier-Do 2019-06-24 15:11:49 +02:00
parent e51412d558
commit b64c7adce2
2 changed files with 25 additions and 3 deletions

View File

@ -191,6 +191,7 @@ class runbot_build(models.Model):
return self.env['runbot.build']
vals['config_id'] = vals['config_id'] if 'config_id' in vals else branch.config_id.id
build_id = super(runbot_build, self).create(vals)
build_id._update_nb_children(build_id.local_state)
extra_info = {'sequence': build_id.id if not build_id.sequence else build_id.sequence}
context = self.env.context
@ -282,8 +283,6 @@ class runbot_build(models.Model):
build_id.write(extra_info)
if build_id.local_state == 'duplicate' and build_id.duplicate_id.global_state in ('running', 'done'): # and not build_id.parent_id:
build_id._github_status()
build_id._update_nb_children(build_id.local_state)
return build_id
def write(self, values):

View File

@ -159,7 +159,6 @@ class Test_Build(common.TransactionCase):
'branch_id': self.branch_10.id,
'name': 'd0d0caca0000ffffffffffffffffffffffffffff',
})
self.env.cr.test = True
build1_1 = self.Build.create({
'branch_id': self.branch_10.id,
'name': 'd0d0caca0000ffffffffffffffffffffffffffff',
@ -243,6 +242,30 @@ class Test_Build(common.TransactionCase):
assert_state(0, 0, 0, 'done', build1_1_1)
assert_state(0, 0, 0, 'done', build1_1_2)
def test_duplicate_childrens(self):
build_old = self.Build.create({
'branch_id': self.branch_10.id,
'name': 'd0d0caca0000ffffffffffffffffffffffffffff',
'extra_params': '0',
})
build_parent = self.Build.create({
'branch_id': self.branch_10.id,
'name': 'd0d0caca0000ffffffffffffffffffffffffffff',
'extra_params': '1',
})
build_child = self.Build.create({
'branch_id': self.branch_10.id,
'name': 'd0d0caca0000ffffffffffffffffffffffffffff',
'parent_id': build_parent.id,
'extra_params': '0',
})
build_parent.local_state = 'done'
self.assertEqual(build_child.local_state, 'duplicate')
self.assertEqual(build_child.duplicate_id, build_old)
self.assertEqual(build_parent.nb_pending, 0)
self.assertEqual(build_parent.nb_testing, 0)
self.assertEqual(build_parent.global_state, 'done')
def rev_parse(repo, branch_name):
"""
simulate a rev parse by returning a fake hash of form