From b64c7adce2010caf1f1ebecbf6dcaf4304a93299 Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Mon, 24 Jun 2019 15:11:49 +0200 Subject: [PATCH] [FIX] runbot: make nb_testing count correct when children are duplicates --- runbot/models/build.py | 3 +-- runbot/tests/test_build.py | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/runbot/models/build.py b/runbot/models/build.py index bb50dbda..7b1565f3 100644 --- a/runbot/models/build.py +++ b/runbot/models/build.py @@ -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): diff --git a/runbot/tests/test_build.py b/runbot/tests/test_build.py index 9eac7321..f01d49d6 100644 --- a/runbot/tests/test_build.py +++ b/runbot/tests/test_build.py @@ -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