"""
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()
