14bcadd66SPavel Labath""" 24bcadd66SPavel LabathTest lldb's handling of job control signals (SIGTSTP, SIGCONT). 34bcadd66SPavel Labath""" 44bcadd66SPavel Labath 5a1901f50SMuhammad Omair Javaidfrom lldbsuite.test.decorators import * 64bcadd66SPavel Labathfrom lldbsuite.test.lldbtest import * 74bcadd66SPavel Labathfrom lldbsuite.test.lldbpexpect import PExpectTest 84bcadd66SPavel Labath 94bcadd66SPavel Labath 104bcadd66SPavel Labathclass JobControlTest(PExpectTest): 11*1b70580dSAdrian Prantl @skipIf(macos_version=["<", "14.0"], asan=True) 12c103eac9SMuhammad Omair Javaid @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) 134bcadd66SPavel Labath def test_job_control(self): 144bcadd66SPavel Labath def post_spawn(): 154bcadd66SPavel Labath self.child.expect("PID=([0-9]+)") 164bcadd66SPavel Labath self.lldb_pid = int(self.child.match[1]) 174bcadd66SPavel Labath 182238dcc3SJonas Devlieghere run_under = [sys.executable, self.getSourcePath("shell.py")] 194bcadd66SPavel Labath self.launch(run_under=run_under, post_spawn=post_spawn) 204bcadd66SPavel Labath 214bcadd66SPavel Labath os.kill(self.lldb_pid, signal.SIGTSTP) 224bcadd66SPavel Labath self.child.expect("STATUS=([0-9]+)") 234bcadd66SPavel Labath status = int(self.child.match[1]) 244bcadd66SPavel Labath 254bcadd66SPavel Labath self.assertTrue(os.WIFSTOPPED(status)) 2680fcecb1SJonas Devlieghere self.assertEqual(os.WSTOPSIG(status), signal.SIGTSTP) 274bcadd66SPavel Labath 284bcadd66SPavel Labath os.kill(self.lldb_pid, signal.SIGCONT) 294bcadd66SPavel Labath 304bcadd66SPavel Labath self.child.sendline("quit") 314bcadd66SPavel Labath self.child.expect("RETURNCODE=0") 32