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