Skip to content

Commit

Permalink
[lldb][NFC] Add basic IOHandler completion test
Browse files Browse the repository at this point in the history
We have no test coverage for the IOHandler code that is doing the
completion in the command line. This is adding a pexpect-based test
as a preparation for the switch to using CompletionRequest in the
whole completion machinery.

llvm-svn: 368679
  • Loading branch information
Teemperor committed Aug 13, 2019
1 parent 36f2318 commit 2515640
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
"""
Test completion in our IOHandlers.
"""

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

class IOHandlerCompletionTest(TestBase):

mydir = TestBase.compute_mydir(__file__)
NO_DEBUG_INFO_TESTCASE = True

def setUp(self):
TestBase.setUp(self)

def expect_string(self, string):
import pexpect
"""This expects for "string", with timeout & EOF being test fails."""
try:
self.child.expect_exact(string)
except pexpect.EOF:
self.fail("Got EOF waiting for '%s'" % (string))
except pexpect.TIMEOUT:
self.fail("Timed out waiting for '%s'" % (string))

@expectedFailureAll(
oslist=["windows"],
bugnumber="llvm.org/pr22274: need a pexpect replacement for windows")
def test_completion(self):
self.setTearDownCleanup()

import pexpect
exe = self.getBuildArtifact("a.out")
prompt = "(lldb) "

self.child = pexpect.spawn(
'%s %s %s %s' %
(lldbtest_config.lldbExec, self.lldbOption, "", exe))

self.expect_string(prompt)
self.child.send("\t\t\t")
self.expect_string("register")

self.child.send("regi\t")
self.expect_string(prompt + "register")
self.child.send("\n")

self.child.send("\t")
self.expect_string("More (Y/n/a)")
self.child.send("n")
self.expect_string(prompt)

# Shouldn't crash or anything like that.
self.child.send("regoinvalid\t")
self.expect_string(prompt)

self.deletePexpectChild()
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
int main(int argc, char **argv) {
lldb_enable_attach();
int to_complete = 0;
return to_complete;
}

0 comments on commit 2515640

Please sign in to comment.