| """ |
| Test the lldb command line takes a filename with single quote chars. |
| """ |
| |
| from __future__ import print_function |
| |
| |
| import os |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| import six |
| |
| class SingleQuoteInCommandLineTestCase(TestBase): |
| |
| mydir = TestBase.compute_mydir(__file__) |
| myexe = "path with '09/a.out" |
| |
| @classmethod |
| def classCleanup(cls): |
| """Cleanup the test byproducts.""" |
| try: |
| os.remove("child_send.txt") |
| os.remove("child_read.txt") |
| os.remove(cls.myexe) |
| except: |
| pass |
| |
| @expectedFailureAll( |
| hostoslist=["windows"], |
| bugnumber="llvm.org/pr22274: need a pexpect replacement for windows") |
| @no_debug_info_test |
| def test_lldb_invocation_with_single_quote_in_filename(self): |
| """Test that 'lldb my_file_name' works where my_file_name is a string with a single quote char in it.""" |
| import pexpect |
| self.buildDefault() |
| lldbutil.mkdir_p(self.getBuildArtifact("path with '09")) |
| system([["cp", |
| self.getBuildArtifact("a.out"), |
| "\"%s\"" % self.getBuildArtifact(self.myexe)]]) |
| |
| # The default lldb prompt. |
| prompt = "(lldb) " |
| |
| # So that the child gets torn down after the test. |
| self.child = pexpect.spawn( |
| '%s %s "%s"' % |
| (lldbtest_config.lldbExec, self.lldbOption, |
| self.getBuildArtifact(self.myexe))) |
| child = self.child |
| child.setecho(True) |
| child.logfile_send = send = six.StringIO() |
| child.logfile_read = read = six.StringIO() |
| child.expect_exact(prompt) |
| |
| child.send("help watchpoint") |
| child.sendline('') |
| child.expect_exact(prompt) |
| |
| # Now that the necessary logging is done, restore logfile to None to |
| # stop further logging. |
| child.logfile_send = None |
| child.logfile_read = None |
| |
| if self.TraceOn(): |
| print("\n\nContents of send") |
| print(send.getvalue()) |
| print("\n\nContents of read") |
| print(read.getvalue()) |
| |
| self.expect(read.getvalue(), exe=False, |
| substrs=["Current executable set to"]) |