From 21803cf66d6447ea3637ddd8854007058ec9dab7 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Mon, 14 Oct 2024 20:04:23 +0200 Subject: [PATCH] MT#61223 build: fix UnboundLocalError > if not br.last().done: > logger.info(f"release:{release} is already building") > > raise PreviousBuildNotDone(msg) > E UnboundLocalError: cannot access local variable 'msg' where it is not associated with a value Change-Id: I4b50fc8f328c24e6bec5ef940d5d7f4d4732e89b --- build/models.py | 4 +++- build/test/test_models.py | 13 ++++++++++++- build/test/test_next.py | 7 +++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/build/models.py b/build/models.py index df2a748..e1cc114 100644 --- a/build/models.py +++ b/build/models.py @@ -66,8 +66,10 @@ class BuildReleaseManager(models.Manager): f"set {release_ok} as release" ) logger.info(msg) + else: + msg = f"release:{release} is already building" if not br.last().done: - logger.info(f"release:{release} is already building") + logger.info(msg) raise PreviousBuildNotDone(msg) projects = ",".join(config.projects) if fake: diff --git a/build/test/test_models.py b/build/test/test_models.py index d78a3f8..ca9b9ac 100644 --- a/build/test/test_models.py +++ b/build/test/test_models.py @@ -73,9 +73,20 @@ class BuildReleaseManagerTestCase(BaseTest): def test_create_mrXX_update_building(self, dlf): """mr8.1 is building, don't allow a new build""" - with self.assertRaises(PreviousBuildNotDone): + with self.assertRaisesRegex( + PreviousBuildNotDone, + r"release\[mrX\.Y\]:mr8\.1 has already a build, " + r"set release-mr8\.1-update as release", + ): BuildRelease.objects.create_build_release("AAA", "mr8.1") + def test_create_trunk_building(self, _): + BuildRelease.objects.create_build_release("AAA", "trunk") + with self.assertRaisesRegex( + PreviousBuildNotDone, "release:trunk is already building" + ): + BuildRelease.objects.create_build_release("BBB", "trunk") + def test_create_mrXX_update(self, dlf): set_build_done(BuildRelease.objects.filter(release="release-mr8.1")) br = BuildRelease.objects.create_build_release("AAA", "mr8.1") diff --git a/build/test/test_next.py b/build/test/test_next.py index abab887..2d4cb7e 100644 --- a/build/test/test_next.py +++ b/build/test/test_next.py @@ -18,6 +18,7 @@ from django.test import override_settings from django.test import SimpleTestCase from build.conf import settings +from build.exceptions import PreviousBuildNotDone from build.models import BuildRelease from build.models import ReleaseConfig from build.utils import get_simple_release @@ -44,6 +45,12 @@ class BuildReleaseTestCase(BaseTest): self.assertEqual(br.release, "trunk-next") self.assertEqual(br.build_release, "trunk") + def test_fail(self): + with self.assertRaisesRegex( + PreviousBuildNotDone, "release:trunk-next is already building" + ): + BuildRelease.objects.create_build_release("AAA", "trunk-next") + @override_settings( BUILD_REPOS_SCRIPTS_CONFIG_DIR=FIXTURES_PATH.joinpath("config.next"),