From 239340e1bcf8640aab0583a1500f7aa4b8b90ceb Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Mon, 24 Jun 2019 13:44:56 +0200 Subject: [PATCH] [IMP] runbot: add test for children --- runbot/tests/test_build.py | 80 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/runbot/tests/test_build.py b/runbot/tests/test_build.py index dabfbaaf..8f848f72 100644 --- a/runbot/tests/test_build.py +++ b/runbot/tests/test_build.py @@ -154,6 +154,86 @@ class Test_Build(common.TransactionCase): self.assertEqual(build1.local_state, 'done', 'A killed pending duplicate build should mark the real build as done') self.assertEqual(build1.local_result, 'skipped', 'A killed pending duplicate build should mark the real build as skipped') + def test_children(self): + build1 = self.Build.create({ + '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', + 'parent_id': build1.id, + 'hidden': True, + 'extra_params': '2', # avoid duplicate + }) + build1_2 = self.Build.create({ + 'branch_id': self.branch_10.id, + 'name': 'd0d0caca0000ffffffffffffffffffffffffffff', + 'parent_id': build1.id, + 'extra_params': '3', + }) + build1_1_1 = self.Build.create({ + 'branch_id': self.branch_10.id, + 'name': 'd0d0caca0000ffffffffffffffffffffffffffff', + 'parent_id': build1_1.id, + 'extra_params': '4', + }) + build1_1_2 = self.Build.create({ + 'branch_id': self.branch_10.id, + 'name': 'd0d0caca0000ffffffffffffffffffffffffffff', + 'parent_id': build1_1.id, + 'extra_params': '5', + }) + + def assert_state(nb_pending, nb_testing, nb_running, global_state, build): + self.assertEqual(build.nb_pending, nb_pending) + self.assertEqual(build.nb_testing, nb_testing) + self.assertEqual(build.nb_running, nb_running) + self.assertEqual(build.global_state, global_state) + + assert_state(5, 0, 0, 'pending', build1) + assert_state(3, 0, 0, 'pending', build1_1) + assert_state(1, 0, 0, 'pending', build1_2) + assert_state(1, 0, 0, 'pending', build1_1_1) + assert_state(1, 0, 0, 'pending', build1_1_2) + + build1.local_state = 'testing' + build1_1.local_state = 'testing' + build1.local_state = 'done' + build1_1.local_state = 'done' + + assert_state(3, 0, 0, 'waiting', build1) + assert_state(2, 0, 0, 'waiting', build1_1) + assert_state(1, 0, 0, 'pending', build1_2) + assert_state(1, 0, 0, 'pending', build1_1_1) + assert_state(1, 0, 0, 'pending', build1_1_2) + + build1_1_1.local_state = 'testing' + + assert_state(2, 1, 0, 'waiting', build1) + assert_state(1, 1, 0, 'waiting', build1_1) + assert_state(1, 0, 0, 'pending', build1_2) + assert_state(0, 1, 0, 'testing', build1_1_1) + assert_state(1, 0, 0, 'pending', build1_1_2) + + build1_2.local_state = 'testing' + + assert_state(1, 2, 0, 'waiting', build1) + assert_state(1, 1, 0, 'waiting', build1_1) + assert_state(0, 1, 0, 'testing', build1_2) + assert_state(0, 1, 0, 'testing', build1_1_1) + assert_state(1, 0, 0, 'pending', build1_1_2) + + build1_1_2.local_state = 'done' + build1_1_1.local_state = 'done' + build1_2.local_state = 'done' + + assert_state(0, 0, 0, 'done', build1) + assert_state(0, 0, 0, 'done', build1_1) + assert_state(0, 0, 0, 'done', build1_2) + assert_state(0, 0, 0, 'done', build1_1_1) + assert_state(0, 0, 0, 'done', build1_1_2) def rev_parse(repo, branch_name): """