Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions lldb/source/Core/IOHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,16 @@ void IOHandlerConfirm::IOHandlerComplete(IOHandler &io_handler,

void IOHandlerConfirm::IOHandlerInputComplete(IOHandler &io_handler,
std::string &line) {
if (line.empty()) {
const llvm::StringRef input = llvm::StringRef(line).rtrim();
if (input.empty()) {
// User just hit enter, set the response to the default
m_user_response = m_default_response;
io_handler.SetIsDone(true);
return;
}

if (line.size() == 1) {
switch (line[0]) {
if (input.size() == 1) {
switch (input[0]) {
case 'y':
case 'Y':
m_user_response = true;
Expand All @@ -176,10 +177,10 @@ void IOHandlerConfirm::IOHandlerInputComplete(IOHandler &io_handler,
}
}

if (line == "yes" || line == "YES" || line == "Yes") {
if (input.equals_insensitive("yes")) {
m_user_response = true;
io_handler.SetIsDone(true);
} else if (line == "no" || line == "NO" || line == "No") {
} else if (input.equals_insensitive("no")) {
m_user_response = false;
io_handler.SetIsDone(true);
}
Expand Down
25 changes: 25 additions & 0 deletions lldb/test/API/driver/quit_speed/TestQuitWithProcess.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,28 @@ def test_run_quit(self):
child.sendline("quit")
print("sent quit")
child.expect(pexpect.EOF, timeout=15)

@skipIfAsan
def test_run_quit_with_prompt(self):
"""Test that the lldb driver's batch mode works correctly with trailing space in confimation."""
import pexpect

self.build()

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

self.launch(executable=exe)
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(r".*LLDB will kill one or more processes.*")
# add trailing space to the confirmation.
child.sendline("yEs ")
child.expect(pexpect.EOF, timeout=15)
Loading