[Concept,2/3] buildman: Fix flaky test_kconfig_change test

Message ID 20251222231838.2298178-3-sjg@u-boot.org
State New
Headers
Series buildman: Enable code coverage in CI |

Commit Message

Simon Glass Dec. 22, 2025, 11:18 p.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

When CI has fewer CPUs than boards, one thread may process multiple
boards. The .config from the first board persists in the thread's work
directory, causing kconfig_changed_since() to return True for the next
board's first commit, triggering an extra reconfig.

Fix by forcing -T4 to ensure each board gets its own thread with an
isolated work directory.

Co-developed-by: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 tools/buildman/func_test.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
  

Patch

diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py
index e748d302561..31cff04a060 100644
--- a/tools/buildman/func_test.py
+++ b/tools/buildman/func_test.py
@@ -1285,10 +1285,13 @@  something: me
                 config_exists[0] = True
             return exists
 
-        # Run buildman with kconfig checking enabled
+        # Run buildman with kconfig checking enabled. Use -T4 to ensure each
+        # board gets its own thread, avoiding .config leaking between boards
+        # when a thread processes multiple boards (which happens with <4 CPUs)
         with mock.patch.object(builderthread, 'kconfig_changed_since',
                                mock_kconfig_changed):
-            self._RunControl('-b', TEST_BRANCH, '-c2', '-o', self._output_dir)
+            self._RunControl('-b', TEST_BRANCH, '-c2', '-o', self._output_dir,
+                             '-T4')
 
         # Verify kconfig_changed_since was called
         self.assertGreater(call_count[0], 0)