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