From 323e5dd34438277ed902f180663aa5fd73ed783b Mon Sep 17 00:00:00 2001 From: 9640-Akhil Date: Tue, 18 Nov 2025 06:03:24 +0000 Subject: [PATCH 1/2] Resolve 'TypeError' in _setup_split_targets_build() Added a check to ensure 'targets_list' is not None before attempting to iterate over it. --- src/clusterfuzz/_internal/build_management/build_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/clusterfuzz/_internal/build_management/build_manager.py b/src/clusterfuzz/_internal/build_management/build_manager.py index 036e563a087..71c19413e18 100644 --- a/src/clusterfuzz/_internal/build_management/build_manager.py +++ b/src/clusterfuzz/_internal/build_management/build_manager.py @@ -1151,7 +1151,7 @@ def _setup_split_targets_build(bucket_path, fuzz_target, revision=None): # Check this so that we handle deleted targets properly. targets_list = _get_targets_list(bucket_path) - if fuzz_target not in targets_list: + if not targets_list or fuzz_target not in targets_list: raise errors.BuildNotFoundError(revision, environment.get_value('JOB_NAME')) fuzz_target_bucket_path = _full_fuzz_target_path(bucket_path, fuzz_target) From ca762799e914107b7e6ff584782265b622631b85 Mon Sep 17 00:00:00 2001 From: Munaganti Kumar Date: Thu, 27 Nov 2025 11:44:24 +0000 Subject: [PATCH 2/2] Add test for missing 'targets_list' in _setup_split_targets_build() This change adds a test case for the fix in _setup_split_targets_build() to handle cases where _get_targets_list() returns 'None'. The test ensures that a 'BuildNotFoundError' is raised, instead of a 'TypeError'. --- .../tests/core/build_management/build_manager_test.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/clusterfuzz/_internal/tests/core/build_management/build_manager_test.py b/src/clusterfuzz/_internal/tests/core/build_management/build_manager_test.py index 9ca577a9d25..c9c61d4f5e1 100644 --- a/src/clusterfuzz/_internal/tests/core/build_management/build_manager_test.py +++ b/src/clusterfuzz/_internal/tests/core/build_management/build_manager_test.py @@ -1731,6 +1731,12 @@ def test_target_not_built(self): os.environ['FUZZ_TARGET_BUILD_BUCKET_PATH']) self.assertCountEqual(['target1', 'target3'], targets_list) + def test_setup_split_build_no_targets_list(self): + """Test that BuildNotFoundError is raised when the targets list is missing.""" + self.mock.read_data.return_value = None + with self.assertRaises(errors.BuildNotFoundError): + build_manager.setup_build(fuzz_target='target3') + def test_target_no_longer_built(self): """Test a target that's not longer listed in target.list.""" test_helpers.patch(self, [