1import os 2import runpy 3import shlex 4import signal 5import sys 6 7# Some tests use SIGUSR1, but that's blocked by default in an Android app in 8# order to make it available to `sigwait` in the Signal Catcher thread. 9# (https://cs.android.com/android/platform/superproject/+/android14-qpr3-release:art/runtime/signal_catcher.cc). 10# That thread's functionality is only useful for debugging the JVM, so disabling 11# it should not weaken the tests. 12# 13# There's no safe way of stopping the thread completely (#123982), but simply 14# unblocking SIGUSR1 is enough to fix most tests. 15# 16# However, in tests that generate multiple different signals in quick 17# succession, it's possible for SIGUSR1 to arrive while the main thread is busy 18# running the C-level handler for a different signal. In that case, the SIGUSR1 19# may be sent to the Signal Catcher thread instead, which will generate a log 20# message containing the text "reacting to signal". 21# 22# Such tests may need to be changed in one of the following ways: 23# * Use a signal other than SIGUSR1 (e.g. test_stress_delivery_simultaneous in 24# test_signal.py). 25# * Send the signal to a specific thread rather than the whole process (e.g. 26# test_signals in test_threadsignals.py. 27signal.pthread_sigmask(signal.SIG_UNBLOCK, [signal.SIGUSR1]) 28 29sys.argv[1:] = shlex.split(os.environ["PYTHON_ARGS"]) 30 31# The test module will call sys.exit to indicate whether the tests passed. 32runpy.run_module("test") 33