================ @@ -127,3 +128,61 @@ def tearDown(self): # Call super's tearDown(). TestBase.tearDown(self) + + def test_run_then_attach_wait_interrupt(self): + # Test that having run one process doesn't cause us to be unable + # to interrupt a subsequent attach attempt. + self.build() + exe = self.getBuildArtifact(exe_name) + + target = lldbutil.run_to_breakpoint_make_target(self, exe_name, True) + launch_info = target.GetLaunchInfo() + launch_info.SetArguments(["q"], True) + error = lldb.SBError() + target.Launch(launch_info, error) + self.assertSuccess(error, "Launched a process") + self.assertState(target.process.state, lldb.eStateExited, "and it exited.") + + # Okay now we've run a process, try to attach/wait to something + # and make sure that we can interrupt that. + + options = lldb.SBCommandInterpreterRunOptions() + options.SetPrintResults(True) + options.SetEchoCommands(False) + + self.stdin_path = self.getBuildArtifact("stdin.txt") + + with open(self.stdin_path, "w") as input_handle: + input_handle.write("process attach -w -n noone_would_use_this_name\nquit") + + # Python will close the file descriptor if all references + # to the filehandle object lapse, so we need to keep one + # around. + self.filehandle = open(self.stdin_path, "r") + self.dbg.SetInputFileHandle(self.filehandle, False) + + # No need to track the output + self.stdout_path = self.getBuildArtifact("stdout.txt") + self.out_filehandle = open(self.stdout_path, "w") + self.dbg.SetOutputFileHandle(self.out_filehandle, False) + self.dbg.SetErrorFileHandle(self.out_filehandle, False) + + n_errors, quit_req, crashed = self.dbg.RunCommandInterpreter( + True, True, options, 0, False, False) + + time.sleep(5) ---------------- adrian-prantl wrote:
Would it be possible to synchronize with I/O instead or does that not work for what you need to test? The sleeps make me nervous from a test reliability perspective. https://github.com/llvm/llvm-project/pull/65822 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits