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.
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
"""Test the lldb public C++ api when doing multiple debug sessions simultaneously."""
|
|
|
|
import os
|
|
import subprocess
|
|
|
|
import lldb
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
|
|
|
|
@skipIfTargetDoesNotSupportThreads()
|
|
class TestMultipleSimultaneousDebuggers(TestBase):
|
|
SHARED_BUILD_TESTCASE = False
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
|
|
# Times out on heavily loaded Linux buildbots, don't want to get into tweaking
|
|
# the timeout per bot. Does work when run alone. See:
|
|
# https://github.com/llvm/llvm-project/issues/101162
|
|
@skipIfLinux
|
|
@skipIfNoSBHeaders
|
|
@skipIfWindows
|
|
@skipIfHostIncompatibleWithTarget
|
|
def test_multiple_debuggers(self):
|
|
self.driver_exe = self.getBuildArtifact("multi-process-driver")
|
|
self.buildDriver(
|
|
"multi-process-driver.cpp",
|
|
self.driver_exe,
|
|
defines=[("LLDB_HOST_ARCH", lldbplatformutil.getArchitecture())],
|
|
)
|
|
self.addTearDownHook(lambda: os.remove(self.driver_exe))
|
|
|
|
self.inferior_exe = self.getBuildArtifact("testprog")
|
|
self.buildDriver("testprog.cpp", self.inferior_exe)
|
|
self.addTearDownHook(lambda: os.remove(self.inferior_exe))
|
|
|
|
# check_call will raise a CalledProcessError if the executable doesn't
|
|
# return exit code 0 to indicate success. We can let this exception go
|
|
# - the test harness will recognize it as a test failure.
|
|
subprocess.check_call([self.driver_exe, self.inferior_exe])
|