Files
llvm-project/lldb/test/API/functionalities/thread/main_thread_exit/TestMainThreadExit.py
Jonas Devlieghere 8f1b0f6327 [lldb] Decorate tests that use threading (#193117)
Add a new decorator `skipIfTargetDoesNotSupportThreads` to skip tests
that use threading. This is motivated by running the test suite
targeting WebAssembly, where `wasip1` does not support threads. There
are variants that do support threading (e.g. `wasip1-threading`) that
the current implementation accounts for.
2026-04-22 10:58:07 -07:00

33 lines
1008 B
Python

"""
Test handling of the situation where the main thread exits but the other threads
in the process keep running.
"""
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
import lldbsuite.test.lldbutil as lldbutil
@skipIfTargetDoesNotSupportThreads()
class ThreadExitTestCase(TestBase):
NO_DEBUG_INFO_TESTCASE = True
# Needs os-specific implementation in the inferior
@skipIf(oslist=no_match(["linux"]))
def test(self):
self.build()
lldbutil.run_to_source_breakpoint(
self, "// break here", lldb.SBFileSpec("main.cpp")
)
# There should be one (non-main) thread left
self.assertEqual(self.process().GetNumThreads(), 1)
# Ensure we can evaluate_expressions in this state
self.expect_expr("call_me()", result_value="12345")
self.runCmd("continue")
# Exit code depends on the version of the linux kernel
self.assertIn(self.process().GetExitStatus(), [42, 47])