This is an ongoing series of commits that are reformatting our Python code. Reformatting is done with `black` (23.1.0). If you end up having problems merging this commit because you have made changes to a python file, the best way to handle that is to run `git checkout --ours <yourfile>` and then reformat it with black. RFC: https://discourse.llvm.org/t/rfc-document-and-standardize-python-code-style Differential revision: https://reviews.llvm.org/D151460
32 lines
972 B
Python
32 lines
972 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
|
|
|
|
|
|
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.assertEquals(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])
|