"""
Test sending SIGINT Process IOHandler
"""

import os

import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test.lldbpexpect import PExpectTest


class TestCase(PExpectTest):
    @skipIf(macos_version=["<", "14.0"], asan=True)
    @skipIf(compiler="clang", compiler_version=["<", "11.0"])
    @skipIf(oslist=["linux"], archs=["arm", "aarch64"])
    def test(self):
        self.build(dictionary={"CXX_SOURCES": "cat.cpp"})
        self.launch(executable=self.getBuildArtifact())

        self.child.sendline("process launch")
        self.child.expect("Process .* launched")

        self.child.sendline("Hello cat")
        self.child.expect_exact("read: Hello cat")

        self.child.sendintr()
        self.child.expect("Process .* stopped")
        self.expect_prompt()

        self.expect("bt", substrs=["input_copy_loop"])

        self.child.sendline("continue")
        self.child.expect("Process .* resuming")

        self.child.sendline("Goodbye cat")
        self.child.expect_exact("read: Goodbye cat")

        self.child.sendeof()
        self.child.expect("Process .* exited")
        self.expect_prompt()

        self.quit()
