19c5b9757SDave Lee""" 29c5b9757SDave LeeTest clang module build progress events. 39c5b9757SDave Lee""" 49c5b9757SDave Leeimport os 59c5b9757SDave Leeimport shutil 69c5b9757SDave Lee 79c5b9757SDave Leeimport lldb 89c5b9757SDave Leeimport lldbsuite.test.lldbutil as lldbutil 99c5b9757SDave Leefrom lldbsuite.test.decorators import * 109c5b9757SDave Leefrom lldbsuite.test.lldbtest import * 119c5b9757SDave Lee 129c5b9757SDave Lee 139c5b9757SDave Leeclass TestCase(TestBase): 149c5b9757SDave Lee @skipUnlessDarwin 159c5b9757SDave Lee def test_clang_module_build_progress_report(self): 169c5b9757SDave Lee """Test receipt of progress events for clang module builds""" 179c5b9757SDave Lee self.build() 189c5b9757SDave Lee 199c5b9757SDave Lee # Ensure an empty module cache. 209c5b9757SDave Lee mod_cache = self.getBuildArtifact("new-modules") 219c5b9757SDave Lee if os.path.isdir(mod_cache): 229c5b9757SDave Lee shutil.rmtree(mod_cache) 239c5b9757SDave Lee self.runCmd(f"settings set symbols.clang-modules-cache-path '{mod_cache}'") 249c5b9757SDave Lee 259c5b9757SDave Lee # TODO: The need for this seems like a bug. 269c5b9757SDave Lee self.runCmd( 279c5b9757SDave Lee f"settings set target.clang-module-search-paths '{self.getSourceDir()}'" 289c5b9757SDave Lee ) 299c5b9757SDave Lee 309c5b9757SDave Lee lldbutil.run_to_name_breakpoint(self, "main") 319c5b9757SDave Lee 329c5b9757SDave Lee # Just before triggering module builds, start listening for progress 339c5b9757SDave Lee # events. Listening any earlier would result in a queue filled with 349c5b9757SDave Lee # other unrelated progress events. 359c5b9757SDave Lee broadcaster = self.dbg.GetBroadcaster() 369c5b9757SDave Lee listener = lldbutil.start_listening_from( 37*a4c21d17SChelsea Cassanova broadcaster, lldb.SBDebugger.eBroadcastBitProgress 389c5b9757SDave Lee ) 399c5b9757SDave Lee 409c5b9757SDave Lee # Trigger module builds. 419c5b9757SDave Lee self.expect("expression @import MyModule") 429c5b9757SDave Lee 439c5b9757SDave Lee event = lldbutil.fetch_next_event(self, listener, broadcaster) 449c5b9757SDave Lee payload = lldb.SBDebugger.GetProgressFromEvent(event) 459c5b9757SDave Lee message = payload[0] 467edff3c1SDave Lee self.assertEqual(message, "Building Clang modules") 47