@@ -107,15 +107,22 @@ async def test_pty_ctrl_c_interrupts_long_running_process(self, tmp_path: Path)
107107 with pytest .raises (PtySessionNotFoundError ):
108108 await session .pty_write_stdin (session_id = started .process_id , chars = "" )
109109
110+ @pytest .mark .parametrize (
111+ ("signum" , "chars" ),
112+ [
113+ pytest .param (signal .SIGINT , "\x03 " , id = "sigint" ),
114+ pytest .param (signal .SIGQUIT , "\x1c " , id = "sigquit" ),
115+ ],
116+ )
110117 @pytest .mark .asyncio
111- async def test_pty_ctrl_c_interrupts_even_if_parent_ignores_sigint (
112- self , tmp_path : Path
118+ async def test_pty_terminal_signals_interrupt_even_if_parent_ignores_signal (
119+ self , tmp_path : Path , signum : signal . Signals , chars : str
113120 ) -> None :
114121 client = UnixLocalSandboxClient ()
115122 manifest = Manifest (root = str (tmp_path / "workspace" ))
116- previous_handler = signal .getsignal (signal . SIGINT )
123+ previous_handler = signal .getsignal (signum )
117124
118- signal .signal (signal . SIGINT , signal .SIG_IGN )
125+ signal .signal (signum , signal .SIG_IGN )
119126 try :
120127 async with await client .create (
121128 manifest = manifest , snapshot = None , options = None
@@ -131,14 +138,14 @@ async def test_pty_ctrl_c_interrupts_even_if_parent_ignores_sigint(
131138
132139 interrupted = await session .pty_write_stdin (
133140 session_id = started .process_id ,
134- chars = " \x03 " ,
141+ chars = chars ,
135142 yield_time_s = 5.5 ,
136143 )
137144
138145 assert interrupted .process_id is None
139- assert interrupted .exit_code == - 2
146+ assert interrupted .exit_code == - signum
140147 finally :
141- signal .signal (signal . SIGINT , previous_handler )
148+ signal .signal (signum , previous_handler )
142149
143150 @pytest .mark .asyncio
144151 async def test_non_tty_pty_session_rejects_stdin_and_can_still_be_polled (
0 commit comments