"""
Test that killing the target while quitting doesn't stall
"""

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


class DriverQuitSpeedTest(PExpectTest):
    source = "main.c"

    @skipIfAsan
    def test_run_quit(self):
        """Test that the lldb driver's batch mode works correctly."""
        import pexpect

        self.build()

        exe = self.getBuildArtifact("a.out")

        # Turn on auto-confirm removes the wait for the prompt.
        self.launch(executable=exe, extra_args=["-O", "settings set auto-confirm 1"])
        child = self.child

        # Launch the process without a TTY so we don't have to interrupt:
        child.sendline("process launch -n")
        print("launched process")
        child.expect(r"Process ([\d]*) launched:")
        print("Got launch message")
        child.sendline("quit")
        print("sent quit")
        child.expect(pexpect.EOF, timeout=15)
